我正在使用 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();
}
答案 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();