2014-03-24 62 views
0

我试图在我的本地服务器上部署一个EAR文件,但它似乎仍在尝试使用hibernate 4(默认选项,我猜)。使用休眠配置JBoss EAP 6.1的问题3.6

我已经这样做:

  • 我在$ JBOSS_HOME $ \模块添加一个Hibernate 3模块\ org.hibernate作为\ 3本module.xml文件:
<module xmlns="urn:jboss:module:1.0" name="org.hibernate" slot="3"> 

    <resources> 
     <resource-root path="hibernate3.jar"/> 
     <resource-root path="commons-collections-3.1.jar"/> 
     <resource-root path="jta-1.1.jar"/> 
     <resource-root path="javassist-3.12.0.GA.jar"/> 
     <resource-root path="antlr-2.7.6.jar"/> 
     <resource-root path="slf4j-api-1.6.1.jar"/> 
     <resource-root path="dom4j-1.6.1.jar"/> 
     <!-- Insert other Hibernate 3 jars to be used here --> 
    </resources> 

    <dependencies> 
     <module name="org.jboss.as.jpa.hibernate" slot="3"/> 
     <module name="asm.asm"/> 
     <module name="javax.api"/> 
     <module name="javax.persistence.api"/> 
     <module name="javax.transaction.api"/> 
     <module name="com.ibm.db2" /> 
     <module name="org.infinispan"/> 


    </dependencies> 
</module> 
  • 我创建了数据源中standalone-full-ha.xml
<datasource jndi-name="java:jboss/datasources/txdb" pool-name="txdbDS" enabled="true" use-java-context="true"> 
    <connection-url>jdbc:db2://156.24.30.103:50000/TX_LSPDB</connection-url> 

    <driver>DB2Driver</driver> 
    <security> 
     <user-name> .... </user-name> 
     <password> .... </password> 
    </security> 
</datasource> 
  • 我的persistence.xml文件中有如下条目:
<persistence-unit name="esdb"> 
<provider>org.hibernate.ejb.HibernatePersistence</provider> 
<jta-data-source>java:jboss/datasources/txdb</jta-data-source> 
<class>com.gtech.commerce.UidBlockPool</class>  
<properties> 
    <property name="hibernate.dialect" value="org.hibernate.dialect.DB2Dialect"/>   
    <property name="jboss.as.jpa.providerModule" value="org.jboss.as.jpa.hibernate:3" /> 
</properties> 
</persistence-unit> 

这是我所得到的,当我尝试部署:

Caused by: java.lang.ClassCastException: org.springframework.orm.hibernate3.LocalJtaDataSourceConnectionProvider incompatible with org.hibernate.service.jdbc.connections.spi.ConnectionProvider at org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:189) [hibernate-core-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1] ... 107 more

任何关于我失踪的想法?

更新:我还没有找到一个解决方案,所以我做了明显的解决方法:我使用Hibernate 3与应用程序捆绑在一起,忽略任何模块

回答

0

恕我直言,这个问题来自于一个事实,即在JBoss数据源建连接池依赖于服务器提供的默认持久性实现。

你可以尝试覆盖服务器数据源配置

看到https://access.redhat.com/site/documentation/en-US/JBoss_Enterprise_BRMS_Platform/5/html/BRMS_Administrator_Guide/Configuring_a_Datasource_for_JBoss_Enterprise_Application_Platform_6.html

但我不知道你是否能指定连接池提供商。

你可以尝试以其他方式设置自定义数据源

看到http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch01.html

请考虑一下比你将不会有任何更在这种情况下:

,将有正确配置的交易厂。

作为更一般的评论,我建议不要在使用Java EE应用程序服务器时重写提供的实现。
如果你不想使用休眠3切换到Jboss 6.0或不依赖于内置的Java EE容器功能(在这种情况下切换到像jetty或tomcat这样轻的东西)

+0

我不能选择容器,实际上我们是从JBoss EAP 4升级到6.1。目前我正在寻找修改DS如何定义的方法,以确保不使用hibernate 4 –

+0

难道你不能至少选择次要版本吗? imho升级到jboss 6.0会简单得多 – Gab