我已经在Tomcat和Postgis上安装了gvnix geo-petclinic示例,没有问题。接下来,我尝试将其安装在Jboss和Oracle之上
我用以下命令更改了roo脚本:
jpa setup --provider HIBERNATE --database ORACLE --userName user --databaseName dbname --password pass --hostName host当我试图运行它时,我得到了这个错误:
13:24:57,781 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 48) MSC000001: Failed to start service jboss.persistenceunit."geo-gvnix-jboss-oracle2.war#persistenceUnit": org.jboss.msc.service.StartException in service jboss.persistenceunit."geo-gvnix-jboss-oracle2.war#persistenceUnit": java.lang.IllegalStateException: java.lang.ClassNotFoundException: Can't find a delegate
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:103) [jboss-as-jpa-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_45]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.1.Final-redhat-1.jar:2.1.1.Final-redhat-1]
Caused by: java.lang.IllegalStateException: java.lang.ClassNotFoundException: Can't find a delegate
at net.bull.javamelody.JpaPersistence.guessDelegate(JpaPersistence.java:202)
at net.bull.javamelody.JpaPersistence.loadOrGuessDelegate(JpaPersistence.java:170)
at net.bull.javamelody.JpaPersistence.findDelegate(JpaPersistence.java:162)
at net.bull.javamelody.JpaPersistence.createContainerEntityManagerFactory(JpaPersistence.java:124)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:200) [jboss-as-jpa-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$600(PersistenceUnitServiceImpl.java:57) [jboss-as-jpa-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:99) [jboss-as-jpa-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
... 4 more
Caused by: java.lang.ClassNotFoundException: Can't find a delegate
... 11 more发布于 2015-01-16 21:03:06
gvNIX生成JBoss标准应用程序,所以您应该在Java服务器上运行您的应用程序,没有问题……但您需要应用一些小的更改;)...
tomcat库:与
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.2.2.Final</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.2.2.Final</version> <scope>provided</scope> <exclusions> <exclusion> <groupId>cglib</groupId> <artifactId>cglib</artifactId> </exclusion> <exclusion> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.1.Final</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.3.1.Final</version> <scope>provided</scope> </dependency>
在<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:META-INF/spring/applicationContext.xml,classpath:META-INF/ spring/applicationContext-security.xml </param-value> </context-param>
1. Comment current BasicDatasource
2. Add the following JNDI Datasource configuration:<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/> <tx:jta-transaction-manager /> <jee:jndi-lookup id="entityManagerFactory" jndi-name="java:jboss/medaleaEntityManagerFactory" expected-type="javax.persistence.EntityManagerFactory" />
3.在persistence.xml.上将transaction-type修改为JTA您的persistence.xml文件如下所示:
[...] <persistence-unit name="persistenceUnit" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:jboss/datasources/YOURDATASOURCENAME</jta-data-source> <properties> [...] <property name="jboss.entity.manager.factory.jndi.name" value="java:jboss/medaleaEntityManagerFactory"/> </properties> </persistence-unit> </persistence>
进行上述更改后,您的项目应在JBoss EAP 6.2+服务器上运行;)
发布于 2015-01-20 14:18:38
Java EE规范说:
EE.8.2.3
库冲突如果应用程序包含某个库的捆绑版本,并且与已安装的库存在相同的库,则应优先使用与该应用程序捆绑的库实例,而不使用该库的任何已安装版本。这允许应用程序准确地捆绑它所需的库的版本,而不受任何已安装的库的影响。请注意,如果该库也是要部署应用程序的Java EE平台版本的必需组件,则平台版本可能(并且通常会)优先。
gvNIX生成的应用程序包括捆绑的库,因此jcgarcia展示了定制生成的应用程序的方法,以便从其中删除持久性模块(因为它是必需的组件),并配置应用程序以从JBoss获取持久性资源。
您只需安装H- JBoss模块即可获得JBoss提供的功能。
https://stackoverflow.com/questions/27983762
复制相似问题