0

我正在将我们的 Seam 2.2.2/JPA1/JEE5/glassfish v2 应用程序迁移到 Seam 2.3/JPA2/Hibernate 3.6/JEE6/Jboss AS7。到目前为止,我正在取得进展,但现在我被困在将hibernate.ejb.naming_strategypersistence.xml 中的设置设置为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>

没有与应用程序war一起打包的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>

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

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

4

0 回答 0