Weblogic 10.3.5从java主类查找EJB3本地会话bean

时间:2014-11-02 13:34:16

标签: ejb weblogic local

我正在使用 Weblogic 10.3.5 和EJB 3用于会话bean

但是我无法为本地无状态会话bean查找jndi,即使我能够查找

远程bean成功

我的代码是针对主类的

    Properties p = new Properties();
    p.put(Context.INITIAL_CONTEXT_FACTORY,
            "weblogic.jndi.WLInitialContextFactory");
    p.put(Context.PROVIDER_URL, "t3://localhost:7001");

    try {

        Context ctx = new InitialContext(p);

        TheBeanRemote bean = (TheBeanRemote) ctx
                .lookup("MrBean#com.bdc.TheBeanRemote");
        System.out.println(bean.sayHello());

        TheLocalLocal bean2 = (TheLocalLocal) ctx.lookup("TheLocalLocal");
        Object obj = ctx.lookup("java:comp/env/ejb/MrBean2");

        System.out.println(bean2.sayHello());

    } catch (Exception e) {
        e.printStackTrace();
    }

远程Bean

import javax.ejb.Remote;

@Remote 公共接口TheBeanRemote {

public String sayHello();

}

本地Bean

导入javax.ejb.Local;

@Local(TheLocalLocal.class) 公共接口TheLocalLocal {

public String sayHello();

}

1 个答案:

答案 0 :(得分:0)

如果您作为"客户端"运行,那是远程呼叫,如果该应用程序在服务器本身上运行,那就是本地呼叫。有意义的是,一个有效,而另一个无效。

您正在使用的属性表示远程通话

Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,
        "weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL, "t3://localhost:7001");
Context ctx = new InitialContext(p);

本地电话是:

Context context = new InitialContext();

在此处查看类似问题:How to lookup JNDI resources on WebLogic?