私はアプリケーションを構築するためにMavenを使用しています。
多くの一般的なjarを含むWARファイルをアプリケーションサーバーの共有ライブラリとしてデプロイしました。
パッケージタイプEJBのアーティファクト(たとえばA-EJB)があります。ejbjarファイルを作成しました。
パッケージタイプEARの別のアーティファクト(たとえばA-EAR)があります。
A-EARのpomファイルにA-EJB依存関係を追加しました。EARファイルを作成でき、共有ライブラリ参照を追加するために、EARのweblogic-application.xmlにライブラリ参照を追加しました。
最終的なEARファイルには、A-EJB.jarファイル、A-EARアーティファクトの他の依存関係jarファイルが表示されました。
EAR構造:
-------------- APP-INF \ lib \ some jars
-------------- META-INF \ application.xml、MANIFEST.MF 、weblogic-application.xml
-------------- A-ejb.jar
A-EJB.jarのクラスファイルには、共有ライブラリ内の共通jarの参照が必要です。
理想的には、展開が正常に行われることを期待していますが、これは行われていません。EARファイルでライブラリ参照を共有していますが、デプロイメント中にEJBモジュールを準備しているときに、classNotFoundExceptionが原因でデプロイメントが失敗します。
A-EJB.jarのクラスファイルは、参照に必要なjarファイルを検索しますが、それらは共有ライブラリで使用可能であり、EARファイルに参照がある場合でも共有ライブラリは使用されません。
例外:
weblogic.application.ModuleException:例外準備モジュール:EJBModule [EJB:011023]デプロイメント記述子の読み取り中にエラーが発生しました。エラーは次のとおりです。.............................................。 ............。
原因:java.lang.ClassNotFoundException:........................................。 ...................。
つまり、これは、EARに共有ライブラリ参照があったとしても、EAR内に存在するejb.jarには共有ライブラリへの参照がなかったことを意味します。これは本当ですか ?
誰かがこの例外とシナリオに直面したことがありますか。この問題の解決について教えてください。