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

问题描述 投票:0回答:1

我是

  • 使用Java 7
  • 使用WebLogic Server版本:12.1.3.0.0(12c)
  • 将一组EJB3 bean作为已部署的EAR文件的一部分
  • 只在我的bean上使用@Stateless注释
  • 能够在JNDI视图中看到bean(例如java:global.ifactory.ifactory-ejb-4.0.0.BomServiceBean!com.icumed.ifactory3.service.BomServiceRemote)
  • 运行一个试图访问这些EJB的命令行应用程序
  • 我正在使用wlthint3client.jar
  • 已禁用IIOP

但是,当我有“java:global”(我得到NameNotFoundException:剩下的名字......)时,我无法访问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)

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

java weblogic12c ejb-3.1
1个回答
0
投票

问题出在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);
© www.soinside.com 2019 - 2024. All rights reserved.