因此,我设置了两个远程WebLogic应用程序,以使用RMI相互通信。
LocalServiceAPI.java文件位于客户端的同一个包中。主持人。
相同的代码在测试服务器上的本地计算机上运行,但不在我公司的unix服务器上。
两个服务器版本均为12.1.3.0.0
最奇怪的事情:narrow是成功的,但是cast会抛出classCastException。
Hashtable<String,String> env = new Hashtable<String,String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
env.put(Context.PROVIDER_URL, "t3://" + address + ":" + port);
Object obj = PortableRemoteObject.narrow(new InitialContext(env).lookup("LocalServiceAPI"), LocalServiceAPI.class);
return (LocalServiceAPI) obj;
例外:
java.lang.ClassCastException: com.cleargoals.service.LocalServiceAPIImpl_12130_WLStub cannot be cast to com.cleargoals.service.LocalServiceAPI
答案 0 :(得分:0)
由于您的服务器版本是12.1.3。所以我假设它是EJB3兼容的服务器。对于EJb3,context.lookup方法调用假定参数传递是远程类的全局JDNI名称...因此请确保在查找调用中传递远程类的全局JNDI名称...如果您不确定是什么,请阅读link是JNDI名称中的全局单词...其次,由于EJB2,您不需要使用PortableRemoteObject.narrow方法,查找调用本身可以为您工作......它的解释也在同一个链接中。