0

Seam 2.2.2/JPA1/JEE5/glassfish v2 アプリケーションを Seam 2.3/JPA2/Hibernate 3.6/JEE6/Jboss AS7 に移行中です。これまでのところ私は進歩を遂げていましたが、今hibernate.ejb.naming_strategyはpersistence.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 は必要に応じてロードされますが、何らかの理由でクラス ローダーに問題が発生したり、別のバージョンと干渉したりしています。

Hibernate 4 は jboss-deployment-structure.xml で除外されています。

    <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