|
|
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
Добрый день, уважаемые гуру! ;) Я начинающий в EJB и JBoss, поэтому начал читать книжку "Manning - Ejb 3 In Action (2006)", если кто знает. Так вот, там в первой части рассматривается простой пример. Смысл - показать, как с помощью аннотаций можно сделать из простого Ява-класса Session Bean. Всего там три файла. Они пишут, что должно работать, а у меня нифига не работает, вылетает NullPointer Exception. Сначала приведу листинги, потом задам вопросы. Итак, HelloUser.java : Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. IDE я использую MyEclipse 5.5.1 GA. JBoss сервер 4.2.0.GA. Создал EJB3 проект в MyEclipse, закинул туда эти три исходника, задеплоил их в жбосс, запустил класс HelloUserClient через main и получил: Код: plaintext 1. Теперь, собственно, вопросы к вам: Почему возникает такая ошибка? Пример я не менял, всё из книжки... Пишут, что должно работать. Пишут, что способ доступа к бину происходит через аннотацию @EJB. Но не пашет :( В чём причина, знающие люди, подскажите! Т.к. я знаком с обычными классами в ява, возникает логичный вопрос: как инициализируется Session бины? Ну, у них нет конструктора, я не могу создать их экземпляр через new. Я понимаю, что выполняются они в EJB-контейнере, но как доступиться к ним? Пример выше - не пашет, но как же? JNDI? Не мог бы кто-то помочь мне запустить этот же пример, но используя JNDI для доступа к бину из клиента? Что для этого нужно сделать? Я знаю, что нужно сделать примерно следующее: Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext Помогите плиз.. Очень благодарен заранее всем, кто попытается помочь. У меня есть огромное желание в этом разобраться. Спасибо большое заранее! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 18:38:00 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
добавь в класспаф все либы из /jboss/client и ругаться не будет Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 18:54:21 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
Deady добавь в класспаф все либы из /jboss/client и ругаться не будет Posted via ActualForum NNTP Server 1.4 Спасибо за ответ. 1. Это ответ по поводу использования JDNI (javax.naming.NoInitialContextException)? 2. Там 56 либов, все их добавлять? Нет ли иного способа? Может, в проект как-то или ещё что-нить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 19:18:23 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
Deady добавь в класспаф все либы из /jboss/client и ругаться не будет Posted via ActualForum NNTP Server 1.4 Добавил в либы проекта один либ, в котором есть NamingContextFactory: jbossall-client.jar и вроде как заработало. Но с экзепшном: "javax.naming.NameNotFoundException: ejb3inaction.example.HelloUser not bound" Тут уже понятно в чём дело, отсюда возвращаюсь к своему вопросу №3 в первом посте, а именно: "Но как и где записать, что бин HelloUser доступен именно по имени "ejb3inaction.example.HelloUser" ?" И что насчёт первого примера с @EJB? По идее, должно работать... нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 19:27:23 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
авторо с экзепшном: "javax.naming.NameNotFoundException: ejb3inaction.example.HelloUser not bound" пора завести фак... первое чего нужно научиться на Jboss это JNDIView см тута авторИ что насчёт первого примера с @EJB? По идее, должно работать... нет? запускаются такие проги хитрым ant скриптом, называется это j2ee client application и ... долго объяснять ... используйте клиента с лукапом. вот ещё tutorial ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 09:53:39 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
кароч codeexamples-javaeesdk.zip\glassfish\chapter1\build.xml Код: plaintext 1. 2. 3. 4. 5. 6. 7. codeexamples-javaeesdk.zip\glassfish\common.xml Код: plaintext собственно appclient.bat из glassfishа испорльзуется для запуска этной муры ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 11:33:51 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
exppпервое чего нужно научиться на Jboss это JNDIView см тута Это первый линк, который я нашёл и по которому делал пример. Место, где просят глянуть в JNDI View я видел, открывал тот линк(http://localhost:8080/jmx-console/), но из написанного "Select the JNDI View and list to show all deployed beans" не совсем понял что надо было запустить ф-цию ниже. Благодаря Вашей ссылке на туториал ниже я действительно понял как и что там смотреть. Спасибо. exppзапускаются такие проги хитрым ant скриптом, называется это j2ee client application и ... используйте клиента с лукапом. Понял, спасибо. Теперь так и буду делать. exppвот ещё tutorial Большое спасибо! Теперь всё получается, работа с JNDI там отлично описана! Теперь, если можно ещё два вопроса: 1. После прочтения ответов, советов, я сделал другой пример, который полностью у меня получился. Т.е. вызывался метод бина, который находился через JNDI lookup. Потом я решил переделать так же вышеописанный пример, но почему-то не получилось. Хотел спросить, в чём может быть ошибка. Итак, привожу листинг классов из работающего примера: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. По такой же схеме, только кроме класса, аналогичного IMyBean. Т.е. я сделал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. Так вот, этот второй переделанный пример работает, НО выводит в консоль только "Invoked EJB successfully .. see server console for output". Т.е. бин находит, в ф-цию идёт, а почему не работает - не пойму, ведь всё сделал, как в примере выше! Даже "extends Serializable" поставил у ремоут и локал интерфейсов(без этого тоже не работало). Как исправить, не подскажете? Может, у кого-то глаз более намётан? 2. Как видите, во втором примере есть // import JLogger.JLogManager; и далее в тексте вызываются методы класса этой либы. Это мой набор классов, я писал его ещё давно, он просто форматированно пишет на диск в заданный файл лог с датой. Дело в том, что я переписал JLogger.jar в дир "%JBOSS_HOME%\lib\ext\", а потом в MyEclipse я включил его в библиотеки проекта. Всё окей, Эклипс даже видит методы классов и не ругается, что не может импортировать. А, вот, при запуске HelloUserClient, вылазит экзепшн: "Exception in thread "main" javax.ejb.EJBException: java.lang.RuntimeException: java.lang.NoClassDefFoundError: JLogger/JLogManager; nested exception is: java.lang.RuntimeException: java.lang.NoClassDefFoundError: JLogger/JLogManager java.lang.RuntimeException: java.lang.NoClassDefFoundError: JLogger/JLogManager". В чём дело - тоже не пойму. Я так же импортировал import javax.naming.InitialContext из переписанной jnpserver.jar и ничего не ругалось... а тут на тебе! Главное, что библиотека JLogger полностью рабочая, я нормально юзал её в сервлетах. Может, кто что подскажет? Спасибо ещё раз всем огромное за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 20:52:06 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
1. похоже, тут какой-то случай nameclashа. думаю можно забить: на практике такое бывает редко: local remote разделяются довольно сильно.выдели суперинтерфейс как в работающем примере. 2. выкинь свой JLogger . никогда не клади jarы в lib/extы. jboss хорошо повязан с log4j и хорошим тоном является использование common-logging. так же модно использовать jndi.properties ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 11:09:05 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
expp1. похоже, тут какой-то случай nameclashа. думаю можно забить: на практике такое бывает редко: local remote разделяются довольно сильно.выдели суперинтерфейс как в работающем примере. Пасиб, так и сделаю. По всей видимости, приму это за правило для написания Session Bean'ов. Правильно? expp2. выкинь свой JLogger . никогда не клади jarы в lib/extы. jboss хорошо повязан с log4j и хорошим тоном является использование common-logging. так же модно использовать jndi.properties Я его выкину, нет проблем. Я не к тому. Log4J я и так собирался использовать, просто проверил как можно подключить дополнительные компоненты приложения? К примеру, если кто-то написал часть приложения, как её подключить и откуда, если не из lib/ext? (Кстати, из других мест она так же не работала...) Спасибо большое за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 14:35:31 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
J-Pro Пасиб, так и сделаю. По всей видимости, приму это за правило для написания Session Bean'ов. Правильно? да правильно, что ? забили J-Pro Я его выкину, нет проблем. Я не к тому. Log4J я и так собирался использовать, просто проверил как можно подключить дополнительные компоненты приложения? К примеру, если кто-то написал часть приложения, как её подключить и откуда, если не из lib/ext? (Кстати, из других мест она так же не работала...) смотрим паковку ear war jar-ов в j2ee spec обычно lib classes каталоги или class-path в манифестах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 14:53:30 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
exppда правильно, что ? забилиКстати, щас, вот, выяснил в чём причина. Оказывается, из бина System.out выводит в консоль сервера, блин :) Т.е. всё работает как надо. Да, сказывается отсутствие опыта работы с EJB. exppсмотрим паковку ear war jar-ов в j2ee spec обычно lib classes каталоги или class-path в манифестах тут нашёл такую фразу:JBoss will not support the Java EE 5 EAR format until version JBoss 5.x. To deploy a persistence archive (a .jar with no EJBs and just persistence units), you must list it in application.xml as an ejb module. Значит, по идее(у меня 4.2.0 GA), если я захочу юзать какую-то библиотеку, типа JLogger.jar(к примеру), мне необходимо создать файл <application>.xml и добавить туда инфу об этой либе? А есть где-то ссылки на примеры, где добавляют простые либы, а не persistence unit? Просто у меня в каталоге %JBOSS_HOME%\server\default\deploy\ лежит только Chapter1.jar, ничего типа Chapter1.xml нет... Нет ссылок? Заранее прошу прощения за некомпетентность в этой области, но больше не к кому обратиться, вокург никто не знает EJB :( Ещё раз спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 15:19:10 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
Всё, по поводу библиотек разобрался. Правда, только с одним методом, с методом пихания библиотек в дир "%JBOSS_HOME%\server\default\lib\" и прописывания их в свойствах прокета. Так у меня всё работает. А, вот, насчёт EAR или WAR - я не в курсе... Может, кто подскажет, ежели знает? Или ссылочку, где почитать? Я юзаю MyEclipse 5.5.1 GA, ежели чего... А сервер JBoss у меня 4.2.1 GA. Пасиб заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 17:11:03 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
кароч, где я узнал как паковать *ar-ы я незнаю что то не гуглицца ничо может тут кароче свои jar клади в xx.war/web-inf/lib , xx.ear/app-inf/lib или в xx.ear/ но тогда на него надо сослаться в манифесте ejb.jar может в спеке чего найдёшь? ну и ide собирают обычно eclipse wtp точно вопрос к гурам: где написано как ear паковать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2007, 12:03:16 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
Подскажите плиз как вы побороли эксэпшен такого плана - javax.naming.NameNotFoundException: UserLogonImpl not bound ? Я задеплоил на Jboss4.2.0 ear-архив с бином UserLogonImpl и его интерфйсами UserLogonLocal, UserLogonRemote: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. Приложение нормально развернулось на серваке, в логе JBoss написал: Код: plaintext 1. 2. 3. 4. 5. 6. Из Эклипса запускаю клиента: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Летит [java] javax.naming.NameNotFoundException: UserLogonImpl not bound [java] at org.jnp.server.NamingServer.getBinding(NamingServer.java:529) [java] at org.jnp.server.NamingServer.getBinding(NamingServer.java:537) [java] at org.jnp.server.NamingServer.getObject(NamingServer.java:543) [java] at org.jnp.server.NamingServer.lookup(NamingServer.java:267) [java] at org.jnp.server.NamingServer.lookup(NamingServer.java:270) [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 18:16:51 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. попробуйте так бин озаглавить. Foo поменяйте на имя бина Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 18:21:42 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
лукапить так: Код: plaintext 1. 2. 3. 4. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 18:29:14 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
берёшь jndiView (см. выше в ветке) смотришь что к чему привязалось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 18:31:24 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
А ещё лучше запустить у себя(при запущенном JBoss'е) в браузере: http://localhost:8080/jmx-consol , выбрать оттуда JNDIView, спуститься по списку вниз до "List of MBean operations:", ниже, сразу после таблички, должна быть кнопочка Invoke, нажать её. На появившейся страничке найти "Global JNDI Namespace", где и поискать свой UserLogonImpl. Если он там есть, значит он забинден, причём, покажет какими интерфейсами. Если нет - то ищите причину... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 18:41:34 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
J-ProА ещё лучше запустить у себя(при запущенном JBoss'е) в браузере: http://localhost:8080/jmx-consol , выбрать оттуда JNDIView, спуститься по списку вниз до "List of MBean operations:", ниже, сразу после таблички, должна быть кнопочка Invoke, нажать её. На появившейся страничке найти "Global JNDI Namespace", где и поискать свой UserLogonImpl. Если он там есть, значит он забинден, причём, покажет какими интерфейсами. Если нет - то ищите причину... жжот парняга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 18:56:50 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
Спасибо, разобрался. Только счас вылетает такое: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. Код метода userLogon.logon() просто возвращает захардкоженый ID Что не правильно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 19:11:58 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
читать умеете? все же написал Код: plaintext 1. хинт: обратите внимание на последнюю строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 21:48:25 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
Deadyчитать умеете? все же написал Код: plaintext 1. хинт: обратите внимание на последнюю строку Тоже самое что с моим вариантом, что с Вашим. Я пробовал и Ваш вариант - разницы не заметил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 10:55:44 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
приведите еще раз код. без PortableRemoteObject работать в принципе не будет. использование его - обязательное условие работы rmi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 11:04:41 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
это вроде раньше так было. у меня на джейбосе удалённые заглушки просто кастились без PortableRemoteObject ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 11:24:43 |
|
||
|
EJB3 + JBoss: простой пример по книжке, помогите разобраться...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. Клиент Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Exception: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Global GNDI Namespace: ... +- beans (class: org.jnp.interfaces.NamingContext) | +- UserLogonImpl (class: org.jnp.interfaces.NamingContext) | | +- remote (proxy: $Proxy70 implements interface com.ejb3.UserLogonRemote,interface org.jboss.ejb3.JBossProxy,interface javax.ejb.EJBObject) ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 11:37:33 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34679287&tid=2144924]: |
0ms |
get settings: |
18ms |
get forum list: |
23ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
55ms |
get topic data: |
17ms |
get forum data: |
4ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
| others: | 328ms |
| total: | 548ms |

| 0 / 0 |
