返回NPE的Websphere远程EJB客户端查找

时间:2016-02-18 03:20:43

标签: java ejb ejb-3.0 websphere-8

我在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 ....

为了确保查找工作正常,我将查找名称更改为某个无效名称,我的代码遇到异常。

0 个答案:

没有答案