Проблемы с поиском компонентов EJB3 WebLogic 12c из удаленного приложения - PullRequest
0 голосов
/ 01 февраля 2019

Я

  • с использованием Java 7
  • с использованием WebLogic Server Версия: 12.1.3.0.0 (12c)
  • имеет в своем составе набор EJB3-компонентовразвернутого файла EAR
  • , просто использующего аннотацию @Stateless на моих bean-компонентах
  • , способных видеть компоненты в представлении JNDI (например, java: global.ifactory.ifactory-ejb-4.0.0.BomServiceBean! Com.icumed.ifactory3.service.BomServiceRemote)
  • , в котором запущено приложение командной строки, которое пытается получить доступ к этим EJB
  • am с помощью wlthint3client.jar
  • отключеныIIOP

Однако я не могу получить доступ к bean-компоненту, когда у меня есть «java: global» (я получаю исключение NameNotFoundException: оставшееся имя ...), и без него я получаю лишь немного больше.По-прежнему происходит сбой при поиске со следующим исключением:

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)

Что я пропустил или ошибся?

1 Ответ

0 голосов
/ 21 марта 2019

Проблема в коде wlthint3client.jar (StubInfo.java).Следующие два свойства не преобразуются должным образом из String в Long, если вы укажете их в файле jndi.properties.

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);
...