Re[2]: EJB. Проблема получения LocaHome interface
От: KievDeveloper  
Дата: 19.10.07 08:16
Оценка: 3 (1)
Блин, сорри, правильно так.

Проверь, что ты создал ejb-ref в деплоймент дискрипторе для entity бина и лукапь его через java:comp/env/ИмяСсылкиВДеплойментДескрипторе

т.е. что-то вот так получается
<session id="Session">
<ejb-name>Session</ejb-name>
<home>ejbs.student.SessionHome</home>
<remote>ejbs.student.Session</remote>
<ejb-class>ejbs.student.SessionBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref>
<ejb-ref-name>ejb/Course</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>ejbs.student.CourseLocalHome</local-home>
<local>ejbs.student.CourseLocal</local>
<ejb-link>Course</ejb-link>
</ejb-local-ref>
</session>

а потом лукапишь java:comp/env/ejb/Course
Re: EJB. Проблема получения LocaHome interface
От: C0s Россия  
Дата: 19.10.07 07:16
Оценка: 2 (1)
Здравствуйте, Nikolay.TS, Вы писали:

NT>Работаю в NetBeans 5.5 сгенерил автоматом сущностные бины и один сессионый.


автоматом не очень хорошо, ибо сам не поймёшь, что он там в дескрипторах понаписал или смысл аннотаций не уловишь

NT>        ic.lookup("AppUserBean");


локальные ссылки всегда так или иначе идут через префикс java:comp/bla-bla-bla

NT>Помогите разобраться в чем суть.


я обычно даю совет разобраться с содержимым контекста, т.е. получив initialcontext просто распечатать, что в нём есть (там есть метод, возвращающий Enumeration содержимого текущего уровня иерархии)
в частности, следует распечатать содержимое new InitialContext("java:comp/env/ejb")
EJB. Проблема получения LocaHome interface
От: Nikolay.TS  
Дата: 19.10.07 05:18
Оценка:
Работаю в NetBeans 5.5 сгенерил автоматом сущностные бины и один сессионый.
С сессионным работаю через удаленный интерфейс из клиентского приложения, проблем нет.

Для Сущносных бинов автоматом генерятся только локальные интерфейсы, оно вроде и правильно по паттерну facades. При попытке получить локальный интерфейс сущностного бина из сессионного возникают проблемы:

при

        InitialContext ic = new InitialContext();
        MainSessionRemoteHome home= (MainSessionRemoteHome) ic.lookup("AppUserBean");


выдается:
javax.naming.NameNotFoundException: AppUserBean not bound

Заметил что как-то странно присоединяется сущностный бин:

Bound EJB LocalHome 'AppUserBean' to jndi 'local/AppUserBean@26490427'

при чем число после @ число всегда разное.

Помогите разобраться в чем суть.
Re: EJB. Проблема получения LocaHome interface
От: KievDeveloper  
Дата: 19.10.07 08:02
Оценка:
NT>
NT>        InitialContext ic = new InitialContext();
NT>        MainSessionRemoteHome home= (MainSessionRemoteHome) ic.lookup("AppUserBean");
NT>


NT>выдается:

NT> javax.naming.NameNotFoundException: AppUserBean not bound

NT>Заметил что как-то странно присоединяется сущностный бин:


NT> Bound EJB LocalHome 'AppUserBean' to jndi 'local/AppUserBean@26490427'



Да, скорее всего, проблема с JNDI.
Если ты создавал ejb-ref в деплоймент дискрипторе для сессионного бина, тогда лукапь его через java:comp/env/ИмяСсылкиВДеплойментДескрипторе
Если не создавал, тогда лукапь по глобальному имени.
Re[3]: EJB. Проблема получения LocaHome interface
От: Nikolay.TS  
Дата: 19.10.07 09:24
Оценка:
Здравствуйте, KievDeveloper, Вы писали:


KD>Блин, сорри, правильно так.


KD>Проверь, что ты создал ejb-ref в деплоймент дискрипторе для entity бина и лукапь его через java:comp/env/ИмяСсылкиВДеплойментДескрипторе


.....
KD></session>

KD>а потом лукапишь java:comp/env/ejb/Course



Спасибо, все заработало!

Т.е. получается, для того что бы работать через локальный интерфейс из другого бина или порограммы, нужно обязательно добавлять reference на него?
Re[4]: EJB. Проблема получения LocaHome interface
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 19.10.07 09:27
Оценка:
Здравствуйте, Nikolay.TS, Вы писали:

NT>Спасибо, все заработало!


NT>Т.е. получается, для того что бы работать через локальный интерфейс из другого бина или порограммы, нужно обязательно добавлять reference на него?


нет
http://denis-zhdanov.blogspot.com
Re[5]: EJB. Проблема получения LocaHome interface
От: KievDeveloper  
Дата: 19.10.07 09:56
Оценка:
Здравствуйте, denis.zhdanov, Вы писали:

DZ>Здравствуйте, Nikolay.TS, Вы писали:


NT>>Спасибо, все заработало!


NT>>Т.е. получается, для того что бы работать через локальный интерфейс из другого бина или порограммы, нужно обязательно добавлять reference на него?


DZ>нет



Почему "нет". Можешь поподробней рассказать, а то у меня сейчас въехать не могу из-за перегрузки.
Re[6]: EJB. Проблема получения LocaHome interface
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 19.10.07 10:16
Оценка:
Здравствуйте, KievDeveloper, Вы писали:

KD>Почему "нет". Можешь поподробней рассказать, а то у меня сейчас въехать не могу из-за перегрузки.


Нет, потому что спецификация не обязывает работать с локальными ejb только через ejb references.
http://denis-zhdanov.blogspot.com
Re[7]: EJB. Проблема получения LocaHome interface
От: KievDeveloper  
Дата: 19.10.07 10:25
Оценка:
Здравствуйте, denis.zhdanov, Вы писали:

DZ>Здравствуйте, KievDeveloper, Вы писали:


KD>>Почему "нет". Можешь поподробней рассказать, а то у меня сейчас въехать не могу из-за перегрузки.


DZ>Нет, потому что спецификация не обязывает работать с локальными ejb только через ejb references.


т.е. можно через глобальный? но тогда не понятна идея: этот бин может использоваться только другим компонентом в рамках одного приложения, следовательно разумно что использование должно идти через локальный референс, а не через глобальное jndi-имя.
Re[8]: EJB. Проблема получения LocaHome interface
От: Аноним  
Дата: 19.10.07 10:33
Оценка:
Здравствуйте, KievDeveloper, Вы писали:

KD>Здравствуйте, denis.zhdanov, Вы писали:


DZ>>Здравствуйте, KievDeveloper, Вы писали:


KD>>>Почему "нет". Можешь поподробней рассказать, а то у меня сейчас въехать не могу из-за перегрузки.


DZ>>Нет, потому что спецификация не обязывает работать с локальными ejb только через ejb references.


KD>т.е. можно через глобальный? но тогда не понятна идея: этот бин может использоваться только другим компонентом в рамках одного приложения, следовательно разумно что использование должно идти через локальный референс, а не через глобальное jndi-имя.


Я столкнулся с тем, что JBoss каждый раз генерит разное глобальное jndi-имя :

Bound EJB LocalHome 'AppUserBean' to jndi 'local/AppUserBean@26490427'

( после @ число всегда разное.)

Так что не понятно как его использовать через глобальное jndi-имя
Re[8]: EJB. Проблема получения LocaHome interface
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 19.10.07 11:36
Оценка:
Здравствуйте, KievDeveloper, Вы писали:

KD>т.е. можно через глобальный? но тогда не понятна идея: этот бин может использоваться только другим компонентом в рамках одного приложения, следовательно разумно что использование должно идти через локальный референс, а не через глобальное jndi-имя.


Разумно предположить, что использовние может быть настроено через локальный референс. Нельзя говорить, что только через него. Кури спецификацию на тему <local-home> и <local>. Попробуй поработай с удаленного клиента через локальные ejb.
http://denis-zhdanov.blogspot.com
Re[9]: EJB. Проблема получения LocaHome interface
От: KievDeveloper  
Дата: 19.10.07 15:48
Оценка:
DZ>Разумно предположить, что использовние может быть настроено через локальный референс. Нельзя говорить, что только через него. Кури спецификацию на тему <local-home> и <local>. Попробуй поработай с удаленного клиента через локальные ejb.

Насколько я понимаю, если у ejb есть локальный интерфейс, а нету глобального, то обращение к данной ejb возможно только в рамках одной и той же виртуальной машине, следовательно к локальным ejb нельзя обращаться по глобальному jdni.
Re[10]: EJB. Проблема получения LocaHome interface
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 19.10.07 17:44
Оценка:
Здравствуйте, KievDeveloper, Вы писали:

KD>Насколько я понимаю, если у ejb есть локальный интерфейс, а нету глобального, то обращение к данной ejb возможно только в рамках одной и той же виртуальной машине, следовательно к локальным ejb нельзя обращаться по глобальному jdni.


Если в твоем понимании 'локальный jndi' это java:comp/env, твое утверждение неверно. Вообще вместо того, чтобы предполагать, имеет смысл почитать спецификацию и знать наверняка.
http://denis-zhdanov.blogspot.com
Re[11]: EJB. Проблема получения LocaHome interface
От: KievDeveloper  
Дата: 19.10.07 17:51
Оценка:
DZ>Если в твоем понимании 'локальный jndi' это java:comp/env, твое утверждение неверно. Вообще вместо того, чтобы предполагать, имеет смысл почитать спецификацию и знать наверняка.


Пожалуйста, если ты имеешь что сказать, то скажи, объясни. К спецификации я и сам могу сходить, но она оч. большая и в ней много для вендоров.
Re[12]: EJB. Проблема получения LocaHome interface
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 19.10.07 18:00
Оценка:
Здравствуйте, KievDeveloper, Вы писали:

KD>Пожалуйста, если ты имеешь что сказать, то скажи, объясни. К спецификации я и сам могу сходить, но она оч. большая и в ней много для вендоров.


Да, я уже заметил, что тебе больше нравится на форуме постить, чем спецификацию глядеть.
Нет, больше я не имею, что тебе сказать
http://denis-zhdanov.blogspot.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.