6

Jboss 5 の 2 つのサーバー インスタンスがあり、それぞれに 2 つの EAR がデプロイされています。Client.Ear と Server.Ear と言います。Server Ear はいくつかの ejb を公開します。これをアノテーションを介して ClientEar に注入したいと考えています。JNDIルックアップを使用して、うまくいきました。しかし、注釈を使用すると、常に javax.naming.NamingException が発生します。ただし、デプロイメントアーティファクト全体でセッション Bean を注入する場合、グローバル JNDI 名を注入に使用する必要があり、@EJB(mappedName ="java:global/Server/component/ApplicationService!com.test.server.ApplicationServiceInterface") のようにそれを使用しました

しかし、リモートサーバーの provider_url を提供してクライアントの ear インスタンスにバインドしていないようです。jndi プロパティ、つまり provider_url、アノテーション @ EJB を使用した初期コンテキスト プロパティを構成するにはどうすればよいですか?

4

3 に答える 3

1

@EJB注釈は、アプリケーションが同じサーバー インスタンスにデプロイされている場合にのみ使用できます。@EJBクロス サーバー インスタンス呼び出しまたはリモート サーバー呼び出しを行おうとしている場合、注釈は機能しません。したがって、あなたの場合、注釈の挿入は機能しません。

それで、解決策は何ですか?

オプション 1)古いスタイルのプログラムによる JNDI ルックアップを使用する

オプション 2)に従ってマネージド Bean を作成しCDI (Context Dependency Injection)、そこですべての JNDI プロパティを構成します。そしてあなた@injectmanaged beanクライアントに。

于 2013-05-13T09:25:48.210 に答える
1

私はこれを知るのが少し遅すぎます。さらに参照するためにこれを含める

移植可能なルックアップ文字列形式を使用できます。EJB は IIOP 上の RMI を使用し、EJB アーキテクチャを CORBA に標準マッピングします。

@EJB(lookup = "corbaname:iiop:example.com:3701#java:global/mycrud/mycrud-dss-ejb/InformeBean!com.myorg.ejb.InformeRemote")

参考文献: https://docs.oracle.com/javase/8/docs/technotes/guides/idl/corba.html https://docs.oracle.com/javase/8/docs/technotes/guides/idl/INStutorial .html

于 2015-12-28T01:53:32.817 に答える