2011-06-28 9 views
0

EJB注入に関するいくつかの問題があり、どこでも解決策を見つけることができませんでした。
状況は次のとおりです。私は、WARといくつかのJARを含むEARファイルを持っています。すべてがapplication.xmlファイルにリストされています。この部分はすべて正常に動作しています。 「プラグインシステム」と呼べるものを追加しようとすると問題が発生します。 私は内部にいくつかの.xhtmlページ、バッキングBean、EJBを持つJARを持っています。このJARは、必要に応じて、特定のディレクトリ(プラグインと呼ぶ)のEARの内部に挿入され、起動時にアプリケーションから検出されます。
JARが検出されると、パスがWARクラスローダに追加され、すべてのページとバッキングBeanが問題なく検出されます。動作しないのは、EJBの注入です(@EJB、@Inject、ルックアップという表記法を使用しようとしました...)。私はJARプラグインの中にあるEJBを注入することはできません。
私の推測では、アプリケーションサーバーはJARを単純なライブラリモジュールとして扱い、内部のどのEJBも検索しないため、JAR内部にありますがアプリケーションからは使用できません。jarにあるEJBの注入に関する問題

私の質問は、これを動作させる方法がありますか?私が使用しているアプリケーションサーバーが3.0 GlassFishのです...


を私はEARのMANIFEST.MFにJARを追加しようとしましたが、何も変わっていません。 application.xmlについて:私は "プラグインシステム"と呼ばれるものの一部であるJARについて、そこには何の参照もありません。これは、アプリケーションサーバーでアプリケーションをデプロイする(または再起動する)ときに検出するため、システム内にあるかどうかがわからず、システムが起動する前に実際にはわからないからです。 各プラグインJARは、システムから動的に(実際のプラグインシステムのように)追加または削除できるページと機能の「コレクション」です。 私の耳の構造は以下の通りです:

に、myapp.ear

  • META-INF
  • libのプラグイン
    • plugin1.JAR
  • app.WAR
  • logic1.JAR
  • logic2.JAR

例えば:application.xmlに私は(彼らはシステム内部で常にある)app.WAR、logic1.JARとlogic2.JARのための参照を持って、起動時にアプリケーションのルックスプラグイン(特定のJAR)をシステムに追加するためのフォルダ "プラグイン"の内側にあります。私は私がやろうとしているかについてより明確にしてきた期待し

は...

答えて

1

EJBも、サーバーのJNDIツリーに登録されていないようです。どのアプリケーションサーバーを使用していますか?このJNDIツリーを見て、EJBが存在するかどうかを調べることができますが、これを行う方法は特定のサーバーによって異なります。

EAR application.xmlでEJBを含むJARをどのように宣言していますか?

それは、このいろいろ書いライドする必要があります:

<application> 
    .... 
    <module> 
    <ejb>nameOfTheJarFile.jar</ejb> 
    </module> 
</application> 

ジャーは、EARの「/ libに」ディレクトリにある必要があります。

こちらがお役に立てば幸いです。

関連する問題