7

WeblogicでEJBを検索する方法を教えてください。
私は次の豆を持っています:

@Stateless
@EJB(name = "DataAccess", beanInterface = DataAccessLocal.class)
public class DataAccess implements DataAccessLocal {
    ...
}

管理対象コンテンツの一部ではない他のクラス(単純なクラス)でこのBeanが必要なので、次のように実行する必要があると思います。

DataAccessLocal dataAccess = DataAccessLocal.class.cast((new InitialContext()).lookup("%SOME_JNDI_NAME%"));

問題は、Weblogic 10.xx ASの場合に%SOME_JNDI_NAME%として何を使用する必要があるかということです。
どんな助けでもありがたいです。

4

1 に答える 1

9

EJBクラスを次のように更新します。

@Stateless(name="DataAccessBean", mappedName="ejb/DataAccessBean")
@Remote(DataAccessRemote.class)
@Local(DataAccessLocal.class)
public class DataAccess implements DataAccessLocal, DataAccessRemote {
    ...
}

同じEARにデプロイされたクラスからEJBを検索する(ローカルインターフェースを使用):

InitialContext ctx = new InitialContext(); //if not in WebLogic container then you need to add URL and credentials.
// use <MAPPED_NAME>
Objet obj = ctx.lookup("java:comp/env/ejb/DataAccessBean");

通常、EJBインジェクションが推奨され、次のように実行できます。

@EJB(name="DataAccessBean")
DataAccessLocal myDataAccessBean;

EJBをリモートで使用しようとしている場合は、リモートインターフェイスと次のJNDI名を使用する必要があります。

DataAccessBean#<package>.DataAccessRemote
于 2011-08-17T14:29:17.290 に答える