我正在开发使用JPA,Hibernate的应用程序。我可以在Tomcat上很好地部署,但不能在jBoss上部署。我收到以下错误。
JBAS011466:找不到PersistenceProvider'org.hibernate.jpa.HibernatePersistenceProvider'
经过一番谷歌搜索之后,我发现一些文章表明我遇到了冲突,因为我将自己的JPA,Hibernate,Persistence API jar打包到了我的WAR中。我想告诉jBoss使用这些文件的我的版本。
我找到了一篇文章,建议将以下内容放在WEB-INF / jboss-classloading.xml中。
<classloading xmlns="urn:jboss:classloading:1.0"
name="timesheet-api.war"
domain="IsolatedDomain"
import-all="false"
parent-first="false" >
</classloading>
我这样做了,但是并没有解决问题。
有什么建议么?
最佳答案
我的建议是将您的应用程序划分为符合域驱动设计的标准,即将业务逻辑与前端逻辑等分开。
即而是将不直接相关的所有内容导出到jar中,并将您的Web逻辑保留在战争中-将它们打包在耳边以将两者结合在一起。
文件结构应如下所示,并通过.pom中的依赖项组成:
| root / jar
| root / war(具有jar作为依赖项)
| root / ear(具有jar和war作为依赖项)
Java EE应用程序以Java存档(JAR)文件(Web
存档(WAR)文件或企业存档(EAR)文件。战争或战争
文件是扩展名为.war或.ear的标准JAR(.jar)文件。
使用JAR,WAR和EAR文件和模块可以实现
使用其中的一些组件来组装许多不同的Java EE应用程序
相同的组件。无需额外的编码;这只是一个问题
将各种Java EE模块组装(或打包)到Java EE JAR中,
WAR或EAR文件。
据我了解,您希望拥有一个与大多数人所说的“企业应用程序”相似的应用程序,即具有许多EE技术的应用程序。您应该将其打包为.ear,然后将其部署在JBoss中,以使其无缝运行(并按照惯例)。
可以在这里找到更多信息:http://docs.oracle.com/javaee/6/tutorial/doc/bnaby.html