写了一个EJB3的demo,部署之后,客户端始终找不到EJB3 JNDI名字,也看了网上不少教程,没一个能用的。后来还是自己想办法解决了这个问题,注意:下面的代码只能在容器里运行正常
Properties prop = new Properties();
prop.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
prop.setProperty(Context.PROVIDER_URL, "ejbd://localhost:4201");//这里可以把localhost改成实际的应用服务器ip
InitialContext context = new InitialContext(prop);
NamingEnumeration bindings = context.listBindings("");
for(;bindings.hasMore();){
Object a = bindings.next();
System.out.println(a);
}
.: java.lang.String:
ejb: javax.naming.Context:org.apache.openejb.client.JNDIContext@10b4199
Demo1ImplRemote: org.apache.openejb.core.ivm.naming.BusinessRemoteReference:proxy=org.apache.openejb.client.StatelessEJBObjectHandler@7fdcde
Demo1ImplRemote就是需要的JNDI名字
在WASCE2.1上运行测试成功
