2016-10-31 10 views
0

私は三つのモジュールとEARアプリケーション有する:注入する

  • 豆は「APP-EJB」モジュールに
  • リモートインタフェースは、「APP-リモート」
  • にされていますWebサービスは "app-war"にあります。
  • app-ejbおよびapp-war use app-remote as library。

すべてが「app.ear」にパッケージされています。

これはうまくいきましたが、今ではEARアプリケーションの外で同じBeanを使用する必要があり、注入が機能しません。

私はアプリ-EJBを持っている:

@Stateless 
@LocalBean 
public class Services implements ServicesRemote { 
    [...] 
} 

とアプリ-リモートで彼のリモートインターフェース:私は問題なくリモートBeanを注入することができる私のアプリ-戦争で

@Remote 
public interface ServicesRemote { 
    [...] 
} 

@Stateless 
@LocalBean 
public class UseServices { 
    @EJB 
    private ServicesRemote services; 
    [...] 
} 

私の外部ejbアプリケーションには、スタンドアロンとして配備され、ライブラリと同じejb-remoteを使用しています。このように同じEJB注入するRY:私は、エラー「クラス[LCOM /[...]/ ServicesRemoteを与える

@Stateless 
@LocalBean 
public class UseServicesFromAnotherApp { 
    @EJB 
    private ServicesRemote services; 
    [...] 
} 

Glassfishの(4.1)。 ]が見つかりません」。

はこの期待されている?私は正しくリモートBeanを注入することができる方法は?

+0

全体のログエラーを投稿できますか? – davidxxx

+0

「エラーログ全体」はありません。 [2016-10-31T14:38:47.657-0300] [glassfish 4.1] [SEVERE] [] [global] [tid:_ThreadID = 43 _ThreadName = admin-listener(3)] [timeMillis:1477935527657] [levelValue:1000] [ クラス[Lcom /..../ ServicesRemote; ] 見つかりません。読み込み中にエラーが発生しました[クラスcom .... UseServicesFromAnotherApp]] –

答えて

0

問題はおそらく、多くのホットデプロイによって生成され、glassfishが不安定になっていました。 glassfishを再起動すると、コードが正しく動作するようになりました(実際にはまだ動作しています)。

グラスフィッシュを最初に再起動せずにここに投稿して申し訳ありません。

1

インジェクションは、リモートインタフェースでは動作しません。ある豆 『』注射用コンテナのJVMの内部で生活し、ご利用いただけます同一のコンテナ内の別のアプリケーション内のBeanにアクセスする場合も同じですが、アプリケーションは同じJVMに存在する可能性がありますが、リモートメソッドは別のJVMや別のアプリケーションから生成されるため、

EJBリモート・インターファーから離れていても問題ありません。私はRESTのような別の "remoting"テクニックを使うでしょう。

+0

リモートインタフェースを使用していて、うまく動作するjava EEアプリケーションがたくさんあります。実際、Oracleのドキュメントでは、「リモート・ビジネス・インタフェースを実装するエンタープライズBeanへのクライアント・アクセスは、依存性インジェクションまたはJNDIルックアップのいずれかを使用して実行されます」という記述が誤っています。http://docs.oracle.com/javaee/6 /tutorial/doc/gipjf.html#gipiu - 実際、グラスフィッシュを再起動すると、注入の開始が適切に行われ、問題なく実際に動作しています。 –

+0

通常のGlashfishユーザではありません。これを私が理解することは、アプリケーションにejb.jarと他のwar、ejbモジュールなどのクライアントが含まれていればRemoteを注入できるということです.Localインタフェースを使用できるときにはこのような有用性はありません代わりに。 – garfield

+0

ejbとwarモジュールを分ける必要があるときにアプリケーションを準備したい場合に便利です。 –

関連する問題