Как найти remote EJB?

User avatar
Marie Clair
Уже с Приветом
Posts: 17692
Joined: 19 Sep 2005 16:57
Location: NJ, US

Как найти remote EJB?

Post by Marie Clair »

Имеется Jboss container с statless EJBs и вот эта информация:

Code: Select all

EJB.INITIALCONTEXTFACTORY=org.jnp.interfaces.NamingContextFactory
EJB.USERACTMANAGEMENT.JNDINAME=xxcompany/ejb/slsb/domain/xxxaccountmgmt/XXXAccountMgmt/B_2_0
EJB.USERACTMANAGEMENT.JNP.TIMEOUT=1500
EJB.USERACTMANAGEMENT.SERVER.URL=xxxxxx
Когда я вызываю:

Code: Select all

Context ctx = new InitialContext(jndiProps);
Object theBean = ctx.lookup("xxcompany/ejb/slsb/domain/xxxaccountmgmt/XXXAccountMgmt/B_2_0");
Возвращается Home Proxy, а не моя EJB которую надо, пробовала casting, получаю ошибку, пробовала javax.rmi.PortableRemoteObject.narrow, не находит по имени.
Пробовала вот так еще:

Code: Select all

ctx.lookup("ejb:xxcompany/ejb/slsb/domain/xxxaccountmgmt/XXXAccountMgmt!com.company.xxasom.xxxuseraccountmgmt.service.interfaces.session.XXXUserAccountMgmt");
Тоже не находит.
Вижу кучу xml files на сервере, но не понимаю какой EJB deployment file.
Спросит некого, original developer of EJBs больше нет.
Как еще можно locate this EJB? Дайте идеи.
The best things in life either make you fat, drunk, or pregnant.
User avatar
Ion Tichy
Уже с Приветом
Posts: 13339
Joined: 07 Dec 2004 04:00
Location: Москва->CO

Re: Как найти remote EJB?

Post by Ion Tichy »

Давненько не брал в руки шашек - пишу по старой памяти.
ЙНДИ лукап возвращает прокси хоума? Вы с этим ничего не поделаете - значит на серверной стороне это ЙНДИ имя сбайндено с обьектом имплементирующим хоум интерфейс ЕЙБя.
Но не все так плохо - емнип, хоум интерфейс ЕЙБя и придуман для получения самого бина, ну или его удаленного представителя. Вот: An enterprise bean's remote home interface defines the methods that allow a remote client to create, find, and remove EJB objects.
Вы можете выложить тут доступные методы полученного хоум прокся?
Как же это вы без гравицаппы пепелац выкатываете из гаража? Это непорядок...
User avatar
Marie Clair
Уже с Приветом
Posts: 17692
Joined: 19 Sep 2005 16:57
Location: NJ, US

Re: Как найти remote EJB?

Post by Marie Clair »

Похоже вы думаете в правильном направлении.
Мой Home Proxy имеет в себе ClientContainer в котором есть 2 параметра InvocationContext and HomeInterceptor.
Вот этот InvocationContext имеет context as a HashMap и там имеем keys: INVOKER, JNDI_NAME, INVOKER_PROXY_BINDING, CONTAINER, EJB_METADATA. Последний интересный value:remote, home, pkClass, session, statlessSession, homeHandle. Remote is type Class и есть мой interface. Вот только как его вызвать? У этой Home Proxy нет никаких getters public methods.
Теоретицйхески я думала что просто надо cast my remote bean interface и все дела, но не работает:

Code: Select all

Exception: com.sun.proxy.$Proxy1 cannot be cast to com.company.xxxasom.xxxuseraccountmgmt.service.interfaces.session.XXXUserAccountMgmt
The best things in life either make you fat, drunk, or pregnant.
User avatar
Ion Tichy
Уже с Приветом
Posts: 13339
Joined: 07 Dec 2004 04:00
Location: Москва->CO

Re: Как найти remote EJB?

Post by Ion Tichy »

Ишшо раз - распечатайте плз тут сигнатуры _всех_ паблик методов Вашего хоум прокся.

Mнится мне, что там д.б. метод create() возвращающий прокси имплементатора ремоут интерфейса бина.
Как же это вы без гравицаппы пепелац выкатываете из гаража? Это непорядок...
User avatar
Marie Clair
Уже с Приветом
Posts: 17692
Joined: 19 Sep 2005 16:57
Location: NJ, US

Re: Как найти remote EJB?

Post by Marie Clair »

Ion Tichy wrote:Ишшо раз - распечатайте плз тут сигнатуры _всех_ паблик методов Вашего хоум прокся.

Mнится мне, что там д.б. метод create() возвращающий прокси имплементатора ремоут интерфейса бина.
Aaaaa, все нашла, спасибо огромное, толкнули меня в правильном направлении! :love: :great:
Нашал я ejb-jar.xml и там эта Home Proxy расписана:

Code: Select all

<home>com.company.xxxasom.xxxxuseraccountmgmt.service.interfaces.session.XXXUserAccountMgmtHome</home>
Короче, надо было ее cast вот в этот type. После cast уже и стал виден create();
Спасибо еще раз!
The best things in life either make you fat, drunk, or pregnant.

Return to “Вопросы и новости IT”