首页 > 解决方案 > 从远程应用程序查找 WebLogic 12c EJB3 bean 时出现问题

问题描述

我是

但是,当我有“java:global”(我得到 NameNotFoundException:remaining name...)时,我无法访问 bean,没有它我只会走得更远。它在查找时仍然失败,但有以下异常:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
    at weblogic.rmi.internal.StubInfo.getEnvQueriedJNDITimeout(StubInfo.java:256)
...
    at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:426)
    at javax.naming.InitialContext.lookup(InitialContext.java:411)

我错过了什么或有什么问题?

标签: javaweblogic12cejb-3.1

解决方案


问题出在 wlthint3client.jar (StubInfo.java) 的代码中。如果您在 jndi.properties 文件中指定以下两个属性,则它们不会正确地从 String 转换为 Long。

Long o = (Long)props.get("weblogic.jndi.responseReadTimeout");

if (o == null) {
  o = (Long)props.get("weblogic.rmi.clientTimeout");
}

如果需要设置这些属性,则必须在代码中创建一个 Hashtable 并将其传递给 InitialContext。

Hashtable<String, Object> env = new Hashtable<String, Object>();

env.put("weblogic.jndi.responseReadTimeout", 15000L);
env.put("weblogic.rmi.clientTimeout", 15000L);

推荐阅读