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
吗?我应该设置 EJB
的 JNDI
名字吗?
对于 WebLogic 上的远程查找,您应该使用 JNDI 名称 MainDaoEJB#<package>.MainDaoEJBRemote
MainDaoEJBRemote mainDaoEJB
= (MainDaoEJBRemote) ctx.lookup("MainDaoEJB#<package>.MainDaoEJBRemote")
我有一个简单的远程接口:
@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
吗?我应该设置 EJB
的 JNDI
名字吗?
对于 WebLogic 上的远程查找,您应该使用 JNDI 名称 MainDaoEJB#<package>.MainDaoEJBRemote
MainDaoEJBRemote mainDaoEJB
= (MainDaoEJBRemote) ctx.lookup("MainDaoEJB#<package>.MainDaoEJBRemote")