2016-04-29 15 views
0

を失敗した私は、GlassFishの3にEJB注入との奇妙な問題を抱えている多分私はちょうど完全に私は何をすべきか理解していない:)Glassfishの3 EJBインジェクションが

だから、これは問題です:私のプロジェクトは、で構成されてい2つのモジュールは、gradleでアセンブルされます。

  • モジュールA
  • モジュールB

モジュールAも正常に動作し、通常GlassFishのモジュールです。モジュールBには汎用スタッフが含まれています。モジュールBもA.の依存関係です。モジュールAは* .warアーカイブとしてglassfishにデプロイされ、モジュールBは適切なlibフォルダに* .jarアーカイブとしてデプロイされます。アーカイブ:

module-a.warそれ.. ../lib/module-b.jar

私が欲しいもの:モジュールBで「汎用」ステートレスBeanを作成し、それをモジュールAで使用します。ただし、動作しません。

モジュールBIで

は、Beanを作成しました:

@Stateless 
public class GeneralPurposeBean {} 

を、私は次のようにモジュールAでそれを使用しようS:

... 
@EJB 
private GeneralPurposeBean genPurpBean; 
... 

私はすでにGeneralPurposeBeanが、私はそれが次の例外で失敗豆を使用してみてください*

の.jarたびにある言及し、どのように:

javax.ejb.CreateException: Could not create stateless EJB 

IをBeanをModule Aに移動するとうまくいきますが、このBeanを他のモジュールと共有したいと思います。これは将来開発されます。誰かが私にここで間違っていることを説明することはできますか?したがって、Beanは認識されますが、作成することはできません。デバッグによってわかったのは、

JCDIServiceImpl#_createJCDIInjectionContext 

エンタープライズBeanとして認識されません。直接アクセスできる* .warのすべてが正しく作成されますが、* .jarには何も含まれません。あなたのモジュールのいずれかを扱う場合は、依存関係と、このモジュールは、あなたがしたいEJBのBeanが私の問題の解決策は、/ META-INFを/置くことだっ注入することが含まれているよう

:誰かが同じ問題を抱えているケースでは

+1

ユニークなEAR(Enterprise ARchive)に入れてもう一度やり直してください – Riadh

+0

'GeneralPurposeBean'が実装している' @ Remote'で注釈を付けられたインターフェースを作成してみてください。次に、ModuleAで、次のように使用します: '@EJB GeneralPurposeBeanInterface genPurpBean;'。 – aribeiro

+0

[JavaEE 6 WAR対EARにおけるEJBのパッケージ化]の可能な複製(http://stackoverflow.com/questions/4441237/packaging-ejb-in-javaee-6-war-vs-ear) –

答えて

0

beans.xmlファイルをモジュールに追加します。それ以外の場合、コンテナはBeanをEJBとして認識しません。

これだけです。

関連する問題