WildFly 10.0

时间:2017-03-24 09:44:58

标签: java hibernate wildfly-10

我有2个项目,一个是普通的java项目(有maven):core,另一个是非maven动态web项目:webapi。后者在core之上充当休息图层。

core使用hibernate没有任何问题。它定义persistence.xml(内部src/META-INF/),如下所示:

<?xml version="1.0" encoding="utf-8"?>

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">

    <persistence-unit name="app" transaction-type="RESOURCE_LOCAL">

        <class>data.entities.Anything</class>
        <class>data.entities.Something</class>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
            <property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://localhost;databaseName=AppDb"></property>
            <property name="javax.persistence.jdbc.user" value="****"></property>
            <property name="javax.persistence.jdbc.password" value="****"></property>
            <property name="hibernate.default_schema" value="dbo"></property>           
            <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect"></property>
            <property name="hibernate.hbm2ddl.auto" value="update"></property>
        </properties>
    </persistence-unit>
</persistence>

webapi使用core并尝试将core的功能公开为服务。我已将core添加到&#34; Java Build Path&#34;和&#34; Deployment Assembly&#34; webapi。当我使用SQL Server时,sqljdbc42.jar也被添加到&#34;部署程序集&#34; webapi

但是,当我尝试在WildFly 10.0中部署webapi时,hibernate实体管理器未正确实例化。我主要怀疑corewebapi中hibernate-core的版本不匹配。 core使用hibernate-core 5.2.4.Final,而对于webapi,它来自WildFly运行时,即5.0.7.Final。这可以从以下日志中看出:

  • core日志:

      

    [HibernateManager.:19] - 尝试为持久性单元创建entityManager:app

         

    [LogHelper.logPersistenceUnitInformation:31] - HHH000204:处理PersistenceUnitInfo [   名称:app   ...]

         

    [Version.logVersion:45] - HHH000412:Hibernate Core {5.2.4.Final}

         

    [环境:213] - HHH000206:找不到hibernate.properties

         

    [Environment.buildBytecodeProvider:318] - HHH000021:字节码提供程序名称:javassist

         

    [JavaReflectionManager.:66] - HCANN000001:Hibernate Commons Annotations {5.0.1.Final}

         

    [DriverManagerConnectionProviderImpl.configure:70] - HHH10001002:使用Hibernate内置连接池(不供生产使用!)

         

    [DriverManagerConnectionProviderImpl.buildCreator:126] - HHH10001005:在URL使用驱动程序[com.microsoft.sqlserver.jdbc.SQLServerDriver] [jdbc:sqlserver:// localhost; databaseName = AppDb]

         

    [DriverManagerConnectionProviderImpl.buildCreator:135] - HHH10001001:连接属性:{user = ****,password = ****}

         

    [DriverManagerConnectionProviderImpl.buildCreator:140] - HHH10001003:自动提交模式:false

         

    [PooledConnections.:41] - HHH000115:Hibernate连接池大小:20(min = 1)

         

    [方言。:153] - HHH000400:使用方言:org.hibernate.dialect.SQLServer2008Dialect

         

    [Version.30] - HV000001:Hibernate Validator 5.2.3.Final

         

    [DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection:47] - HHH10001501:从(非JTA)DDL执行的JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@19ccca5]获取的连接不在自动提交中模式; Connection&#39;本地交易&#39;将被提交,Connection将被设置为自动提交模式。

         

    [HibernateManager.:22] - 为persistence-unit:app

    创建了entityManager      

    [QueryTranslatorFactoryInitiator.initiateService:47] - HHH000397:使用ASTQueryTranslatorFactory

  • webapi日志:

      

    [org.jboss.as.jpa](MSC服务主题1-2)WFLYJPA0002:读取app的persistence.xml

         

    [org.jboss.as.jpa](ServerService线程池 - 29)WFLYJPA0010:启动持久性单元(第1阶段2)服务&#39; webapi.war#app&#39;

         

    [org.hibernate.jpa.internal.util.LogHelper](ServerService线程池 - 29)HHH000204:处理PersistenceUnitInfo [   名称:app   ...]

         

    [org.hibernate.Version](ServerService Thread Pool - 29) HHH000412:Hibernate Core {5.0.7.Final}

         

    [org.hibernate.cfg.Environment](ServerService线程池 - 29)HHH000206:找不到hibernate.properties

         

    [org.hibernate.cfg.Environment](ServerService线程池 - 29)HHH000021:字节码提供程序名称:javassist

         

    [org.hibernate.orm.deprecation](ServerService Thread Pool - 29)HHH90000001:发现使用不推荐的设置来指定Scanner [hibernate.ejb.resource_scanner];请改用[hibernate.archive.scanner]

         

    [org.hibernate.annotations.common.Version](ServerService线程池 - 29)HCANN000001:Hibernate Commons Annotations {5.0.1.Final}

         

    [org.jboss.as.connector.deployers.jdbc](MSC服务主题1-5)WFLYJCA0004:部署符合JDBC的驱动程序类com.microsoft.sqlserver.jdbc.SQLServerDriver(6.0版)

         

    [org.jboss.as.connector.deployers.jdbc](MSC服务主题1-5)WFLYJCA0018:已启动驱动程序服务,驱动程序名称= webapi.war_com.microsoft.sqlserver.jdbc.SQLServerDriver_6_0

         

    [org.jboss.as.jpa](ServerService线程池 - 29)WFLYJPA0010:启动持久性单元(第2阶段,共2期)服务&#39; webapi.war#app&#39;

         

    [org.hibernate.dialect.Dialect](ServerService线程池 - 29)HHH000400:使用方言:org.hibernate.dialect.SQLServer2008Dialect

         

    [org.hibernate.envers.boot.internal.EnversServiceImpl](ServerService线程池 - 29)是否启用了Envers集成? :真的

         

    [org.hibernate.validator.internal.util.Version](ServerService Thread Pool - 29)HV000001:Hibernate Validator 5.2.3.Final

         

    [org.hibernate.tool.hbm2ddl.SchemaUpdate](ServerService线程池 - 29)HHH000228:运行hbm2ddl架构更新

         

    [org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl](ServerService线程池 - 29)HHH000262:找不到表:Anythings

         

    [org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl](ServerService线程池 - 29)HHH000262:找不到表:Somethings

         

    [org.wildfly.extension.undertow](ServerService线程池 - 28)WFLYUT0021:已注册的Web上下文:/ webapi

         

    [org.jboss.as.server](DeploymentScanner-threads - 1)WFLYSRV0010:已部署&#34; webapi.war&#34; (runtime-name:&#34; webapi.war&#34;)

如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

这可以通过在Wildfly中更改Hibernate核心的版本来解决。为此,请更改您的META-INF / persistence.xml文件,如下所示:

String a = "[[\"22-1-2017;10:00-19:00\"],[\"22-1-2017;10:00-19:00\"]]";
String[] b = a.replace("[", "").replace("]", "").replace("\"", "").split(",");
List<String> c = Arrays.asList(b);

添加一些微型版本:

<properties>
    <property name="jboss.as.jpa.providerModule" value="org.hibernate:5.2" />
    ...
</properties>

礼貌链接:http://in.relation.to/2016/07/07/updating-hibernate-orm-in-wildfly/