0

Weblogic 10.3.x で実行されているマルチモジュール Java EE 5 プロジェクトがあります。1 つのモジュールには EJB があり、バッチ プロセッサは Web モジュールから実行されます。JavaEE5 には CDI がないため、EJB で JNDI ルックアップを実行する必要があります。EJB は、クラスでは @Stateless で定義され、インターフェースでは @Remote で定義されます。

次の文字列を調べて、EJB へのアクセスに成功しました。

ejb/batchService#com.example.service.batch.ejb.BatchServiceRemote

ただし、これはプラットフォームに大きく依存していると思います。少なくとも web モジュールの web.xml 内、およびおそらく weblogic.xml 内に何かを配置する必要があったと思います。おそらく EJB モジュールでも...

誰かがこれを適切に行う方法を教えてもらえますか? それとも、これが利用可能な最良の方法ですか?

4

2 に答える 2

1

ローカル Bean の JNDI 形式は

java:comp/env/BeanClassName  

リモート Bean の JNDI 形式は次のとおりです。

mappedName#com.package.BeanClassName  

為に

@Stateless(mappedName = "mappedName")
public class BeanClassName  {  

PS。この形式は でサポートされていWebLogic 10.3ます。別のアプリケーションサーバーの動作は異なる可能性がありますю

于 2013-10-09T13:52:04.273 に答える
0

EJB 3.1 / EE 6 より前では、EJB の標準化された検索文字列はありません。これらは標準化されていないため、EJB の実際のバインディング名をハードコーディングすると、プロジェクトが製品固有になります。

最良の解決策は、別のレベルの間接化を作成すること<ejb-local-ref>です。web.xml で (または、サーブレットまたは他のコンポーネント クラスで@EJB/として) を宣言し、次に を使用して ref を検索します。次に、EJB ref にプラットフォーム固有のバインディングを使用します。@EJBsjava:comp/env/xyz

于 2013-10-09T13:52:12.003 に答える