組み込みの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を完全に削除すると、同じエラーが発生します)
ありがとうございました