首页 > 解决方案 > 如何将 Hibernate 与 WildFly 一起使用?

问题描述

晚上好。
我正在尝试创建一个使用以下项目的项目:

  • 爪哇
  • JSF 2.3
  • 马文
  • CDI 2.0
  • 休眠
  • Wildfly 服务器

    我的目的是学习所有这些家伙的基础知识。起初,我遵循了一个很棒的 [@BalusC 的教程][1],它教我如何设置和首先运行 webapp。

    我现在的问题在于将数据库与应用程序集成。我遵循了一些指南并在互联网上进行了一些搜索,发现一种方法是编辑web.xmlpersistence.xml。(我试图让它尽可能接近历史教程)。
    这是我的web.xml

        <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                          http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
        version="4.0" metadata-complete="true">
        <display-name>project</display-name>
    
        ... (some params)
    
        <data-source>
            <name>java:global/projectDS</name>
            <class-name>org.postgresql.ds.PGConnectionPoolDataSource</class-name>
            <url>jdbc:postgresql://localhost:5432/project</url>
        </data-source>
    
        ... (servlet info)
    </web-app>
    

    还有我的persistence.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
        http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
        version="2.2">
        <persistence-unit name="projectPU"
            transaction-type="JTA">
            <jta-data-source>java:global/projectDS</jta-data-source>
    
            <class>project.entity.Message</class>
    
            <properties>
                <property name="hibernate.dialect"
                    value="org.hibernate.dialect.PostgreSQL95Dialect" />
                <property name="hibernate.default_schema" value="main" />
                <property name="hibernate.hbm2ddl.auto" value="create" />
                <property name="javax.persistence.jdbc.driver"
                    value="org.postgresql.Driver" />
                <property name="hibernate.show_sql" value="true" />
                <property name="hibernate.format_sql" value="true" />
            </properties>
    
        </persistence-unit>
    </persistence>
    

    当我运行 Web 应用程序时,我收到以下错误:

    Caused by: org.jboss.as.controller.OperationFailedException: WFLYJCA0117: org.postgresql.ds.PGConnectionPoolDataSource is not a valid javax.sql.DataSource implementation [ "WFLYJCA0117: org.postgresql.ds.PGConnectionPoolDataSource is not a valid javax.sql.DataSource implementation" ]
    

    我想知道你们中是否有人知道我做错了什么以及我该如何解决。

    PS:我在WildFly 的页面上读到 WildFly 有它自己的 Hibernate“版本”,一些论坛说在使用“外部”休眠源时可能会出现一些问题。但是,由于我的 Hibernate 配置与 Wildfly 的任何配置都没有任何关联(我相信如此),我想这不是问题所在。

    提前致谢。

    更新#1
    我尝试了来自链接@TacheDeChoco 发送的解决方案#2。起初它是工作人员,但我遇到了另一个我仍在尝试解决的错误。我会多尝试一点,如果有更完整的反馈,我会来这里。
    回答你的问题:当我第一次问的时候,我还没有做任何你问的事情。
    非常喜欢。

  • 标签: javahibernatejakarta-eewildfly

    解决方案


    你是否

    1. 在 Wildfly 中注册一个新的 postgres 模块(使用适当的 jar)?
    2. 在 Wildfly 配置文件 (standalone-***.xml) 中声明数据源以及使用的驱动程序?

    可以在这里找到很好的解释(参见选项#2): https ://www.stenusys.com/how_to_setup_postgresql_datasource_with_wildfly/


    推荐阅读