weblogic 上的 EJB 远程 JNDI 绑定

EJB remote JNDI binding on weblogic

我有一个简单的远程接口:

@Remote
public interface MainDaoEJBRemote {

    void sayHelloRemote();

}

我有一个 Stateless EJB 实现了我的接口:

    @Stateless(mappedName = "MainDaoEJB")
    @Remote
    public class MainDaoEJB implements MainDaoEJBRemote {

        @Override
        public void sayHelloRemote() {

            System.out.println("remote invoked...");

        } 
    }

我已经将它部署到 weblogic 服务器。

我有一个 ManagedBean,我正在尝试查找遥控器 EJB 这是我的查找部分:

public void sayHello() throws NamingException {
    System.out.println("invoked...");
    Hashtable env = new Hashtable();
    env.put("java.naming.factory.initial",
            "weblogic.jndi.WLInitialContextFactory");
    env.put("java.naming.provider.url", "t3://127.0.0.1:7001");
    env.put("java.naming.security.principal", "user");
    env.put("java.naming.security.credentials", "pass");
    Context ctx = new InitialContext(env);
    try {
        MainDaoEJBRemote mainDaoEJB
                = (MainDaoEJBRemote) ctx.lookup("MainDaoEJB");
        System.out.println("invoked... " + mainDaoEJB.toString());
        mainDaoEJB.sayHelloRemote();

    } catch (NamingException e) {
        System.out.println("NamingException: " + e.getMessage());
    } finally {
        try {
            ctx.close();
        } catch (Exception e) {
             System.out.println("Exception: " + e.getMessage());   
        }
    }

}

当我尝试在 managedBean 上调用我的 sayHello() 方法时,它抛出 NamingException:无法解析 'MainDaoEJB'。已解决 ''

你能告诉我如何正确查找我的遥控器 EJB 吗?我应该设置 EJBJNDI 名字吗?

对于 WebLogic 上的远程查找,您应该使用 JNDI 名称 MainDaoEJB#<package>.MainDaoEJBRemote

MainDaoEJBRemote mainDaoEJB
            = (MainDaoEJBRemote) ctx.lookup("MainDaoEJB#<package>.MainDaoEJBRemote")