Wildfly 10可以使用传统的Hibernate 3.5吗?

时间:2016-11-03 15:04:18

标签: java hibernate jboss wildfly-10

我正在尝试从Jboss 4.2.3升级到WildFly 10 剩下的主要问题是Hibernate 我此时不想升级到Hibernate 5(Wildfly 10的默认设置) 所以我试图使用现有的使用Hibernate 3.5的代码,但是我遇到了一些问题。

我有一个包含几场战争和一些ejb-jar的耳朵。

我现在在我的ejb-jar和耳中都有jboss-deployment-structure.xml, 所有指定:

<exclusions>
    <module name="org.hibernate" />
</exclusions>

我在我的耳朵的lib中包含了以下jar(也是在JBoss 4.2.3部署中):

hibernate-annotations-jboss.4.2.3.jar
hibernate-commons-annotations-3.0.0.ga.jar
hibernate-jboss.4.2.3.jar
hibernate-validator-4.0.2.GA.jar
jbossall-client-4.2.3.GA.jar

我还在耳朵上添加了以下jar:

hibernate-entitymanager-jboss.4.2.3.jar  

我在部署耳朵时收到以下错误消息:

    INFO  [org.hibernate.ejb.Ejb3Configuration] (ServerService Thread Pool -- 83) Processing PersistenceUnitInfo [
    name: AuditTrailPU
    ...]
2016-11-03 15:45:01,521 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 86) MSC000001: Failed to start service jboss.persistenceunit."InSyncEar-11.0.0-SNAPSHOT.ear/SchedulerCore.jar#SchedulerPU": org.jboss.msc.service.StartException in service jboss.persistenceunit."InSyncEar-11.0.0-SNAPSHOT.ear/SchedulerCore.jar#SchedulerPU": java.lang.RuntimeException: error trying to scan <jar-file>: vfs:/C:/TFSROOT/Purchasing_Trunk/InsyncRuntime/target/InTync/wildfly-10.1.0.Final/bin/content/InTyncEar-11.0.0-SNAPSHOT.ear/SchedulerCore.jar/
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:179)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:121)
    at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:667)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:193)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: java.lang.RuntimeException: error trying to scan <jar-file>: vfs:/C:/TFSR/Purch/IntyncRuntime/target/InTync/wildfly-10.1.0.Final/bin/content/InTyncEar-11.0.0-SNAPSHOT.ear/SchedCore.jar/
    at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:619)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:341)
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:126)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:341)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$1200(PersistenceUnitServiceImpl.java:69)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:174)
    ... 7 more
Caused by: java.lang.RuntimeException: Archive browser cannot handle protocol: vfs:/C:/TFSR/Purch/IntyncRuntime/target/InTync/wildfly-10.1.0.Final/bin/content/InTyncEar-11.0.0-SNAPSHOT.ear/SchedCore.jar/
    at org.jboss.util.file.ArchiveBrowser.getBrowser(ArchiveBrowser.java:56)
    at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:610)
    ... 12 more

我看到其他人遇到这种错误,但他们得到的建议是从他们的耳朵/战争中移除他们的冬眠罐子。在我的情况下,Hibernate jar必须在那里,因为我已经排除了“内置”Hibernate。 问题可能是因为Hibernate类(Ejb3Configuration)正在调用JBoss实用程序类(ArchiveBrowser)。但是ArchiveBrowser在jbossall-client-4.2.3.GA.jar中(在我的ear / lib中)。

我也尝试将以下内容放在我的ejb-jars的persistence.xml中:

 <property name="jboss.as.jpa.providerModule" value="hibernate3-bundled" />

正如在网站上向具有相同问题但导致消息的人提出的建议:

org.jboss.modules.ModuleNotFoundException: hibernate3-bundled:main

我应该设置这样的模块吗?

所以有人知道问题是什么,有解决方案吗?

另外,我的耳朵部署在wildfly-10.1.0.Final \ standalone \ deployments文件夹中

但信息是:

尝试扫描时出错:

  

VFS:/ C:/TFSROOT/Purchasing_Trunk/InsyncRuntime/target/InTync/wildfly-10.1.0.Final/bin/的含量 /InTyncEar-11.0.0-SNAPSHOT.ear/SchedulerCore。罐/

如果我查看文件系统,现有的“bin”文件夹下没有“content”文件夹 那是问题吗?那是在看错了地方?

最后,它是否可能,并且有没有人能够让Wildfly 10成功使用Hibernate 3? (我看到有关此问题的问题和答案,但没有“工作”解决方案)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

似乎答案是否定的。因为Hibernate和Wildfly是交织在一起的。我已经放弃了这种方法并努力将代码迁移到hibernate 5,因此它可以与wildfly 10一起使用