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 回答