Здравствуйте, Nikolay.TS, Вы писали:
NT>Работаю в NetBeans 5.5 сгенерил автоматом сущностные бины и один сессионый.
автоматом не очень хорошо, ибо сам не поймёшь, что он там в дескрипторах понаписал или смысл аннотаций не уловишь
NT> ic.lookup("AppUserBean");
локальные ссылки всегда так или иначе идут через префикс java:comp/bla-bla-bla
NT>Помогите разобраться в чем суть.
я обычно даю совет разобраться с содержимым контекста, т.е. получив initialcontext просто распечатать, что в нём есть (там есть метод, возвращающий Enumeration содержимого текущего уровня иерархии)
в частности, следует распечатать содержимое new InitialContext("java:comp/env/ejb")
Работаю в 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'
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/ИмяСсылкиВДеплойментДескрипторе
Если не создавал, тогда лукапь по глобальному имени.
KD>Блин, сорри, правильно так.
KD>Проверь, что ты создал ejb-ref в деплоймент дискрипторе для entity бина и лукапь его через java:comp/env/ИмяСсылкиВДеплойментДескрипторе
..... KD></session>
KD>а потом лукапишь java:comp/env/ejb/Course
Спасибо, все заработало!
Т.е. получается, для того что бы работать через локальный интерфейс из другого бина или порограммы, нужно обязательно добавлять reference на него?
Здравствуйте, Nikolay.TS, Вы писали:
NT>Спасибо, все заработало!
NT>Т.е. получается, для того что бы работать через локальный интерфейс из другого бина или порограммы, нужно обязательно добавлять reference на него?
Здравствуйте, denis.zhdanov, Вы писали:
DZ>Здравствуйте, Nikolay.TS, Вы писали:
NT>>Спасибо, все заработало!
NT>>Т.е. получается, для того что бы работать через локальный интерфейс из другого бина или порограммы, нужно обязательно добавлять reference на него?
DZ>нет
Почему "нет". Можешь поподробней рассказать, а то у меня сейчас въехать не могу из-за перегрузки.
Здравствуйте, 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-имя
Здравствуйте, KievDeveloper, Вы писали:
KD>т.е. можно через глобальный? но тогда не понятна идея: этот бин может использоваться только другим компонентом в рамках одного приложения, следовательно разумно что использование должно идти через локальный референс, а не через глобальное jndi-имя.
Разумно предположить, что использовние может быть настроено через локальный референс. Нельзя говорить, что только через него. Кури спецификацию на тему <local-home> и <local>. Попробуй поработай с удаленного клиента через локальные ejb.
DZ>Разумно предположить, что использовние может быть настроено через локальный референс. Нельзя говорить, что только через него. Кури спецификацию на тему <local-home> и <local>. Попробуй поработай с удаленного клиента через локальные ejb.
Насколько я понимаю, если у ejb есть локальный интерфейс, а нету глобального, то обращение к данной ejb возможно только в рамках одной и той же виртуальной машине, следовательно к локальным ejb нельзя обращаться по глобальному jdni.
Re[10]: EJB. Проблема получения LocaHome interface
Здравствуйте, KievDeveloper, Вы писали:
KD>Насколько я понимаю, если у ejb есть локальный интерфейс, а нету глобального, то обращение к данной ejb возможно только в рамках одной и той же виртуальной машине, следовательно к локальным ejb нельзя обращаться по глобальному jdni.
Если в твоем понимании 'локальный jndi' это java:comp/env, твое утверждение неверно. Вообще вместо того, чтобы предполагать, имеет смысл почитать спецификацию и знать наверняка.
DZ>Если в твоем понимании 'локальный jndi' это java:comp/env, твое утверждение неверно. Вообще вместо того, чтобы предполагать, имеет смысл почитать спецификацию и знать наверняка.
Пожалуйста, если ты имеешь что сказать, то скажи, объясни. К спецификации я и сам могу сходить, но она оч. большая и в ней много для вендоров.
Re[12]: EJB. Проблема получения LocaHome interface
Здравствуйте, KievDeveloper, Вы писали:
KD>Пожалуйста, если ты имеешь что сказать, то скажи, объясни. К спецификации я и сам могу сходить, но она оч. большая и в ней много для вендоров.
Да, я уже заметил, что тебе больше нравится на форуме постить, чем спецификацию глядеть.
Нет, больше я не имею, что тебе сказать