无法使用hibernate 3.6(ClassCastException)在Jboss AS7中设置org.hibernate.cfg.DefaultComponentSafeNamingStrategy

时间:2013-06-12 12:02:08

标签: java hibernate jboss seam

我正在将Seam 2.2.2 / JPA1 / JEE5 / glassfish v2应用程序迁移到Seam 2.3 / JPA2 / Hibernate 3.6 / JEE6 / Jboss AS7。到目前为止,我一直在取得进展,但现在我仍然坚持将persistence.xml中的hibernate.ejb.naming_strategy设置设置为org.hibernate.cfg.DefaultComponentSafeNamingStrategy

java.lang.ClassCastException: org.hibernate.cfg.DefaultComponentSafeNamingStrategy cannot be cast to   org.hibernate.cfg.NamingStrategy
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1086) [hibernate3.jar:3.6.10.Final]
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:290) [hibernate3.jar:3.6.10.Final]
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:372) [hibernate3.jar:3.6.10.Final]
... 74 more

正如您所看到的,hibernate3.jar:3.6.10.Final是根据需要加载的,但不知何故,类加载器有一些问题或干扰另一个版本。

jboss-deployment-structure.xml中排除了Hibernate 4:

    <exclusions>
        <module name="org.hibernate" slot="main"/>
        <module name="org.hibernate.envers" slot="main"/>
        <module name="org.hibernate.validator" slot="main"/>
    </exclusions>

应用程序之战没有打包与hibernate相关的jar。它作为AS7模块加载:

<module xmlns="urn:jboss:module:1.0" name="org.hibernate" slot="3">
    <resources>
        <resource-root path="hibernate-validator-4.1.0.Final.jar"/>
        <resource-root path="hibernate3.jar"/>
    </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="javax.validation.api"/>
        <module name="org.antlr"></module>
        <module name="org.javassist"/>
        <module name="org.slf4j"/>
        <module name="org.apache.log4j"/>
        <module name="org.apache.commons.collections"></module>
        <module name="org.dom4j"></module>
    </dependencies>
</module>

在peristence.xml中通过<property name="jboss.as.jpa.providerModule" value="org.hibernate:3"/>引用。

当我删除命名策略设置时,应用程序继续加载但由于命名冲突而稍后崩溃,这通常由安全命名策略解决。

0 个答案:

没有答案