首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gvnix胜过Jboss 6和Oracle

gvnix胜过Jboss 6和Oracle
EN

Stack Overflow用户
提问于 2015-01-16 20:16:43
回答 2查看 243关注 0票数 0

我已经在Tomcat和Postgis上安装了gvnix geo-petclinic示例,没有问题。接下来,我尝试将其安装在Jboss和Oracle之上

我用以下命令更改了roo脚本:

代码语言:javascript
复制
jpa setup --provider HIBERNATE --database ORACLE --userName user --databaseName dbname --password pass --hostName host

当我试图运行它时,我得到了这个错误:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2015-01-16 21:03:06

gvNIX生成JBoss标准应用程序,所以您应该在Java服务器上运行您的应用程序,没有问题……但您需要应用一些小的更改;)...

tomcat库:与

  • Provided不同,JBoss提供了持久化库。您应该在pom.xml上设置为提供的持久性组件(请记住,根据需要设置您的oracle驱动程序,并将oracle驱动程序添加到JBOSS服务器)

<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>

  • Path conflicts:JBoss在类路径配置上不喜欢'*‘,因此您需要使用以下命令修改web.xml文件:

<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>

  • DataSource:EAP 6.2.0+上运行的JBoss gvNIX应用程序需要为数据访问配置有效的JBoss数据源。因此,您需要修改applicationContext.xml文件上的数据源配置,如下所示:

代码语言:javascript
复制
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+服务器上运行;)

票数 0
EN

Stack Overflow用户

发布于 2015-01-20 14:18:38

Java EE规范说:

EE.8.2.3

库冲突如果应用程序包含某个库的捆绑版本,并且与已安装的库存在相同的库,则应优先使用与该应用程序捆绑的库实例,而不使用该库的任何已安装版本。这允许应用程序准确地捆绑它所需的库的版本,而不受任何已安装的库的影响。请注意,如果该库也是要部署应用程序的Java EE平台版本的必需组件,则平台版本可能(并且通常会)优先。

gvNIX生成的应用程序包括捆绑的库,因此jcgarcia展示了定制生成的应用程序的方法,以便从其中删除持久性模块(因为它是必需的组件),并配置应用程序以从JBoss获取持久性资源。

您只需安装H- JBoss模块即可获得JBoss提供的功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27983762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档