2011-08-17 6 views
4

WeblogicでEJBを検索する方法を教えてください。Weblogic 10.x.xでInitialContextを使用して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%として使用する必要がありますか?
ご協力いただければ幸いです。

+0

:http://stackoverflow.com/questions/676926/giving-an-ejb- Bは、リモートであなたは、リモート・インタフェースと、次のJNDI名を使用する必要がありますa-jndi/677008#677008 –

+0

ありがとう@Nuno。それはリモートインタフェースのためだけに機能しますか?またはローカルですか? – kardanov

+0

私はリモートインターフェイスでしか作業していないので、それはわかりません –

答えて

7

私はこのように見て、あなたの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注入:

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

は(ローカルインタフェースを使用して)同じEARに配備クラスからEJBを見上げます通常は次のようにしてください:

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

EJを使用しようとすると私は別の場所でこれに答えました

DataAccessBean#<package>.DataAccessRemote 
+0

ありがとうございます@Jeff、私はちょうど(ローカルインターフェイスで)試してみて、次の例外があります:(私は完全なスタックトレースを持っていませんが、主要部分は) "残りの名前:env/ejb/DataAccessBean"です。あなたはなにか考えはありますか? – kardanov

+0

電子メール([email protected])でお手伝いします。 ... –

+0

また、EJBがデプロイされているEARの外部からEJBにアクセスしようとしている場合、またはEJBが独自のejb-jarにデプロイされている場合は、リモートメソッドを呼び出す。 –

関連する問題