5

組み込みのWebsphere7jpaプラグインを使用せず、代わりにアプリケーションWEB-INF / lib /open-jpa2と独自の永続性プロバイダーを使用します。Websphere用のOSGIおよびJPA2機能パックをインストールできません。

元々、persistence.xmlをロードしようとしただけでsax解析エラーが発生していました(version = "2"はサポートされていません)。このエラーは、open-jpa1.2.3のクラスによってスローされました。websphere / appserver / bin / wsjpaversion.batを実行すると、open-jpa1.2.3jarが表示されます。デフォルトでは、アプリのopen-jpa2jarをオーバーライドします。この構成オプションをオンにして、open-jpa2jarを含む共有ライブラリを作成しました。「この共有ライブラリに分離されたクラスローダーを使用する」。親を最後にロードするようにアプリケーションクラスローダーを設定し、それに新しい共有ライブラリリソースを割り当てました。「バージョン2」エラーはなくなりましたが、別の問題があります。EntityManagerを初期化しようとすると、エラーが発生します。

Caused by: javax.persistence.PersistenceException: Failed to load provider from META-INF/services
    at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:121)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:91)
    at java.lang.J9VMInternals.initializeImpl(Native Method)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
    ... 2 more
Caused by: java.lang.ClassCastException: com.ibm.websphere.persistence.PersistenceProviderImpl incompatible with javax.persistence.spi.PersistenceProvider
    at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:110)
    ... 11 more

もう1つの詳細:persistence.xml内で、provider要素はデフォルトのWebsphere永続性プロバイダーではなく独自のPersistenceProviderImplに設定されます。では、このWebsphereのデフォルトはどこから来ており、どうすればそれを防ぐことができますか?(もう1つの重要な注意:persistence.xmlを完全に削除すると、同じエラーが発生します

ありがとうございました

4

1 に答える 1

4

機能パックをインストールしないと、負け戦になります。独自のJPA実装をプラグインすることは可能ですが、JPA APIを使用してプラグインすることはできません。そのため、WAS 7は1.0バージョンのJPAに接続します(たとえば、これがどのように行われるかを参照してください。クラスローダーポリシーはありません)最初は魅力的ですが、ジャグリングはそれを変えるでしょう)。

于 2011-09-11T23:19:23.230 に答える