NameNotFoundException при вызове EJB в Weblogic 10.3

Да пробуют win32api модуль:

import win32api
e_msg = win32api.FormatMessage(-2147352567)

можно захватить любые коды, возвращенные из исключения, и передать их FormatMessage. Ваш пример имел 2 кода ошибок.

7
задан Pascal Thivent 25 October 2009 в 03:09
поделиться

1 ответ

Для поиска удаленного интерфейса сеансового компонента с несколькими удаленными бизнес-интерфейсами (например, com.acme.FooBusiness1 , com.acme. FooBusiness2 ), вам нужно найти имя, полученное из комбинации глобального имени JNDI целевого ejb ( mappedName () в @Stateless ) и конкретного удаленного бизнес-интерфейса, разделенных знаком "# ":

InitialContext ic = new InitialContext();
FooBusiness1 bean1 = (FooBusiness1) ic.lookup("FooEJB#com.acme.FooBusiness1");
FooBusiness2 bean2 = (FooBusiness2) ic.lookup("FooEJB#com.acme.FooBusiness2");

В типичном случае bean-компонента, имеющего только один удаленный бизнес-интерфейс, эта полная форма не требуется. В этом случае имя JNDI компонента можно использовать напрямую:

FooBusiness bean = (FooBusiness) ic.lookup("FooEJB");

Это теоретическая часть. Теперь о практике. В вашем случае, насколько я могу судить, вы обращаетесь к EJB из Weblogic, поэтому я бы предпочел использовать конструктор no-arg InitialContext () (и использовать jndi.properties файл конфигурации для других сред), но это лишь примечание. Затем вам следует найти com.foo.HelloWorld , удаленный интерфейс, а не com.foo. HelloWorldBean , реализация:

InitialContext ic = new InitialContext();
(HelloWorld) ic.lookup("HelloWorld#com.foo.HelloWorld");

И если ваш bean-компонент имеет только один удаленный бизнес-интерфейс, это должно работать:

(HelloWorld) ic.lookup("HelloWorld");
10
ответ дан 7 December 2019 в 01:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: