Java weblogic上的EJB远程JNDI绑定
我有一个简单的远程接口:Java weblogic上的EJB远程JNDI绑定,java,jakarta-ee,weblogic,Java,Jakarta Ee,Weblogic,我有一个简单的远程接口: @Remote public interface MainDaoEJBRemote { void sayHelloRemote(); } @Stateless(mappedName = "MainDaoEJB") @Remote public class MainDaoEJB implements MainDaoEJBRemote { @Override public void sayHelloRe
@Remote
public interface MainDaoEJBRemote {
void sayHelloRemote();
}
@Stateless(mappedName = "MainDaoEJB")
@Remote
public class MainDaoEJB implements MainDaoEJBRemote {
@Override
public void sayHelloRemote() {
System.out.println("remote invoked...");
}
}
我有一个实现我的接口的无状态EJB:
@Remote
public interface MainDaoEJBRemote {
void sayHelloRemote();
}
@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
?我应该设置我的EJB
的JNDI
名称吗 对于WebLogic上的远程查找,您应该使用JNDI名称MainDaoEJB#。MainDaoEJBRemote
MainDaoEJBRemote mainDaoEJB
= (MainDaoEJBRemote) ctx.lookup("MainDaoEJB#<package>.MainDaoEJBRemote")
mainDaoEJB远程mainDaoEJB
=(MainDaoEJBRemote)ctx.lookup(“MainDaoEJB#.MainDaoEJBRemote”)
对于WebLogic上的远程查找,您应该使用JNDI名称MainDaoEJB。\MainDaoEJBRemote
MainDaoEJBRemote mainDaoEJB
= (MainDaoEJBRemote) ctx.lookup("MainDaoEJB#<package>.MainDaoEJBRemote")
mainDaoEJB远程mainDaoEJB
=(MainDaoEJBRemote)ctx.lookup(“MainDaoEJB#.MainDaoEJBRemote”)