EclipseLink (2.0.2)を使用すると、 Weblogic (10.3.3)で奇妙な動作が見られます。
これが私がすることです。Maven を使用して、 JPA (1.0.2)を使用するプロジェクトをコンパイルします。このプロジェクトでは、モジュール "A"はモジュール "B"に依存しています。「B」には多数のエンティティ ( javax.persistence.Entity ) が含まれています。しかし、「persistence.xml」は「B」のすべてのエンティティが登録されている「A」にあります。「B」はオプション パッケージとして展開され、 「A」はマニフェスト経由で参照されます。
デプロイは成功しましたが、アプリケーションを実行してエンティティを永続化しようとすると、上記のエラーが "A" に表示されます。
次のいずれかのアクションで解決します。
- Weblogic サーバーを再起動します。
- モジュール A の POM ファイルを更新し、明示的にモジュール B に依存関係を追加します。モジュール A のクラスは「オブジェクト」を受け入れ、それを EntityManager に渡すため (明示的にエンティティ クラス タイプではありません)、元々この依存関係は存在しません。この依存関係を追加しても、JAR ファイルのマニフェストは変更されません。JAR ファイルの META-INF フォルダー内の「maven」ディレクトリーのみを更新します。weblogic がこのフォルダを気にすることさえないと思います。
EclipseLinks のソースをダウンロードし、アプリケーションをデバッグしました。この問題は、「 org.eclipse.persistence.internal.sessions.AbstractSession 」クラスの「 descriptors」コレクション フィールドにエンティティの記述子がなく、エンティティとして認識されないために発生するようです。
キャッシュするサーバーの更新を再起動すると思います。しかし、2 番目の解決策はどうでしょうか。なぜそれが機能するのですか?JARファイルのMETA-INFディレクトリの「maven」ディレクトリはweblogicに認識されていますか?