简体   繁体   English

weblogic上的EJB远程JNDI绑定

[英]EJB remote JNDI binding on weblogic

I have a simple remote interface: 我有一个简单的远程接口:

@Remote
public interface MainDaoEJBRemote {

    void sayHelloRemote();

}

And I have a Stateless EJB that implements my interface: 我有一个实现我的界面的Stateless EJB:

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

        @Override
        public void sayHelloRemote() {

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

        } 
    }

I have deployed it to a weblogic server. 我已将其部署到weblogic服务器。

I have a ManagedBean and I'm trying to lookup for the remote EJB This is my lookup part: 我有一个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());   
        }
    }

}

When i try to invoked my sayHello() method at the managedBean it throws NamingException : Unable to resolve 'MainDaoEJB'. 当我尝试在managedBean上调用sayHello()方法时,它会抛出NamingException :无法解析'MainDaoEJB'。 Resolved '' 解决 ''

Can you tell me how to look up my remote EJB properly? 你能告诉我如何正确查找我的远程EJB吗? Should I set up the JNDI name of my EJB ? 我应该设置EJBJNDI名称吗?

For remote lookup on WebLogic you should use JNDI name MainDaoEJB#<package>.MainDaoEJBRemote 对于WebLogic上的远程查找,您应该使用JNDI名称MainDaoEJB#<package>.MainDaoEJBRemote

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM