在 Weblogic 10.xx 上使用 InitialContext 查找 EJB

发布于 2024-11-30 00:48:23 字数 480 浏览 1 评论 0原文

您能告诉我如何在 Weblogic 上查找 EJB 吗?
我有以下 bean:

@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 的情况下应该将什么用作 %SOME_JNDI_NAME% 10.xx AS?
任何帮助将不胜感激。

Could you please tell me how to lookup EJB on Weblogic?
I have following bean:

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

I need this bean in other class which is not part of managed content (just simple class), so I guess it should be done like this:

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

The question is what should be used as %SOME_JNDI_NAME% in case of Weblogic 10.x.x AS?
Any help will be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

泛滥成性 2024-12-07 00:48:23

我会将您的 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

I would update your EJB class to look like this:

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

Looking up the EJB from a class deployed in the same EAR (using the local interface):

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 injection is usually preferred, and you can do it as follows:

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

If you are trying to use the EJB remotely then you will need to use the remote interface and the following JNDI name:

DataAccessBean#<package>.DataAccessRemote
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文