我在war
中打包了一个远程EJB,并部署在Websphere 8.5
。
我的客户端代码如下所示
public class WASClient {
public static void main(String[] args) {
try {
Hashtable env = new Hashtable();
env.put("java.naming.factory.initial",
"com.ibm.websphere.naming.WsnInitialContextFactory");
env.put("java.naming.provider.url", "iiop:localhost:2809");
Context ctx = new InitialContext(env);
Object obj = ctx.lookup("StudentService");
StudentService service = (StudentService) obj;
System.out.println("EJB Output -> " + bean);
} catch (Exception e) {
e.printStackTrace();
}
}
}
我在类路径中添加了EJB瘦客户端和orb jar。
从管理控制台我进入我的部署战争,进入EJB jndi名称,并将EJB查找名称作为StudentService。
禁用管理安全性,重新启动websphere并运行我的客户端代码并返回NPE。
然后我使用createEJBStubs工具为ejbs创建了存根。重新部署战争并休息我的客户端代码。它仍然归还NPE。
为了确保我的EJB查找工作正常,我在战争中添加了一个Web服务资源类,并从Web服务中查找EJB并且运行正常。
我将sas和ssl文件添加到env属性并运行客户端选项,它仍然返回NPE。
我还添加了
env.put("org.omg.CORBA.ORBClass", "com.ibm.CORBA.iiop.ORB");
但它还是归还了NPE。
我也检查了端口号。我可以在服务器日志中看到rmi正在端口2809上运行。
我做错了什么?
P.S 当我试图打印obj时,它打印了一些remote_stubxxxxxx ....
为了确保查找工作正常,我将查找名称更改为某个无效名称,我的代码遇到异常。