2017-08-29 3 views
0

3つのWARといくつかの共通の依存関係がlib /フォルダ内にあるEARファイルがあります。これらの依存関係の1つに、スケジュールされたメソッドを持つEJBがありますが、サーバーがそれを認識していないようです。ログにエビデンスはなく、コードは実行されません。EARの内部にあるJARの内部にあるときに、WildFlyがEJBタイマー(@Schedule)を認識しない

しかし、WEB-INF/lib内に同じjarを持つ単純な戦争を展開すると、動作します。私はすでにmavenプラグインを使ってjarをejb-jarとしてパッケージ化しようとしましたが、全く成功しませんでした。

何が起こっているはずですか?

答えて

0

EARのlibディレクトリ内のJARはEJB jarとはみなされず、その内容はその点でデプロイ時に考慮されません。 libディレクトリは、クラスが自動的にEARファイル内のすべてのモジュールに表示されるライブラリ・ジャーを簡単に提供できるようにするためにのみ存在します。

EARファイルには、含まれているさまざまなmodulesが一覧表示されているMETA-INF/application.xmlファイルが含まれています。 Java EE 6以前は、潜在的なEJBのためにejbモジュールしか考慮されていませんでした。 Java EE 6以降では、そのリストにWebモジュールが追加されました。 WebモジュールのWEB-INF/libディレクトリ内のすべてのjarは、ejb-jarが含まれていてもWebモジュールの一部とみなされます。 Webモジュール内にあるejb-jar.xmlファイルはすべてマージされます。これは、WebモジュールがスタンドアロンのWARファイルとしてデプロイされている場合でも適用されます。

+0

あなたはそうです。 jarをejbモジュールとしてEAR内に置くことで、この問題が解決されました。ありがとう。 –

関連する問題