从远程应用程序查找 WebLogic 12c EJB3 bean 时出现问题

Problems looking up a WebLogic 12c EJB3 beans from a remote application

我是

但是,当我有 "java:global" 时我无法访问该 bean(我得到 NameNotFoundException: remaining name...),如果没有它我只会稍微走得更远。查找仍然失败,出现以下异常:

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)

我错过了什么或错了什么?

问题出在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");
}

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

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

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