Да пробуют win32api модуль:
import win32api
e_msg = win32api.FormatMessage(-2147352567)
можно захватить любые коды, возвращенные из исключения, и передать их FormatMessage. Ваш пример имел 2 кода ошибок.
Для поиска удаленного интерфейса сеансового компонента с несколькими удаленными бизнес-интерфейсами (например, 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");