【问题标题】:giving an EJB a JNDI给 EJB 一个 JNDI
【发布时间】:2009-03-24 11:05:53
【问题描述】:

我已经创建了带有远程接口的 EJB:

@Stateless
public class TestSessionBean implements TestSessionRemote 
{

    public void businessMethod() 
    {
            System.out.println ("***businessMethod");
    }
}

我通过在服务器上运行的另一个组件(例如 servlet)访问它:

ic = new InitialContext();
ic.lookup("myEJB");

我正在使用 netBeans 6.5.1 和 glassfish v2。

我该怎么做?

谢谢, 伊多

【问题讨论】:

    标签: glassfish ejb jndi


    【解决方案1】:

    实际上 ejb3 使用默认命名约定,我还没有找到解决方法。

    您的 bean 的名称将类似于: TestSessionBean#package.TestSessionBean

    要访问您的远程服务,您可以执行以下操作

    InitialContext ctx = new InitialContext();
    ctx.lookup(interfaceClass.getSimpleName()+"#"+interfaceClass.getName());
    

    其中 interfaceClass 是您的远程接口的类。

    请注意您尚未为该网络服务器定义远程接口(或本地接口)。您可能无法从其他上下文访问 theejb。

    至于更改名称,我认为实际上无法通过注释进行更改。虽然不确定

    【讨论】:

    • 很抱歉在将近一个月后重新开始。在 Glassfish v2 中,您可以执行 @Stateless(mappedName="fooBean") 然后您可以使用“fooBean”进行查找。这是特定于供应商的——它不可移植。不过要小心,因为在 Glassfish 3 (EJB 3.1) 中这会有所改变。您仍然可以将 mappedName 与远程接口查找一起使用,但现在有一个标准化的 java:global 命名设置。如果您还不够困惑,请参阅glassfish.java.net/javaee5/ejb/EJB_FAQ.html
    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 2012-09-22
    • 2013-01-30
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多