RMI期间的WebLogic ClassCastException

时间:2015-01-22 21:19:55

标签: weblogic rmi downcast

因此,我设置了两个远程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

1 个答案:

答案 0 :(得分:0)

由于您的服务器版本是12.1.3。所以我假设它是EJB3兼容的服务器。对于EJb3,context.lookup方法调用假定参数传递是远程类的全局JDNI名称...因此请确保在查找调用中传递远程类的全局JNDI名称...如果您不确定是什么,请阅读link是JNDI名称中的全局单词...其次,由于EJB2,您不需要使用PortableRemoteObject.narrow方法,查找调用本身可以为您工作......它的解释也在同一个链接中。