|
|
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
У меня есть Enterprise приложение, которое состоит из WAR - вебмодуля и EJB-модуля. В EJB-модуле есть Session Bean c удалённым интерфейсом: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. (RMI3-war - название проекта) Всё это работает на GlassFish3. И есть у меня вот такой вот сервлет, который можно вызвать запросом через браузер: http://127.0.0.1:8888/RMI3-war/MyServlet. На экране я вижу: Servlet MyServlet at /RMI3-war dddd Hello from EJB businessMethodR То есть (!) удалённый (!) бизнес-метод из EJB-модуля вызывается! Код сервлета: Код: sql 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. А как мне сделать то же самое из приложения с GUI? Например, из обычного Java-класса? Как мне вызвать бизнес-метод EJB-модуля из Java-приложения, обладающего GUI? Тут вроде, понятно - и WAR и EJB находятся на GlassFish - на одном сервере - в одном месте. Соответственно они как-то там находят друг друга по именам, точнее WAR находит EJB по имени и как-то вызывает его метод. А как быть, если у нас приложение, которое не на GlassFish? Оно же должно знать host и port (socket) где находится GlassFish... Если создать Enterprise Application CLient и вызвать в нём EJB-метод (воспользоваться вставкой кода), то получится вот это: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. В NetBeans это как-то работает. То есть System.out.println(newSessionBeanR.businessMethodR()); выводит строку "Hello from EJB businessMethodR". А из консоли 'java -jar RMI3-client.jar' вываливает исключения! Вот и вопрос: Этому приложению надо же знать сокет сервера, чтоб вызвать удалённый метод на сервере GlassFish, а где тут сокет? А нету тут нигде сокета! Нету метода, который бы просил сокет в качестве параметра. Есть просто: Код: sql 1. 2. Какая-то анотация @EJB и всё... Вот такая проблема. Если клиент - браузер, то понятно. А если клиент - хост где-то в сети, то не понятно как вызвать удалённый метод на сервере приложений. Может кто-нибудь помочь в этом вопросе, а то я запутался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 16:43:02 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Вот и выросло поколение, которое пишет EJB и даже не знает что такое JNDI. Sun/Oracle своего добились. http://wiki.netbeans.org/CreatingEJB3UsingNetbeansAndGlassfish ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 16:46:30 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
авторСоответственно они как-то там находят друг друга по именам, точнее WAR находит EJB по имени и как-то вызывает его метод. тебе надо разобраться как оно "находит" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 16:48:45 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
автортебе надо разобраться как оно "находит" Через JNDI... да? http://wiki.netbeans.org/CreatingEJB3UsingNetbeansAndGlassfish Creating a Java Stand-Alone Client As mentioned above, you cannot use the @EJB annotation out of a Glassfish server environment, therefore in a Stand-Alone application you must use the JNDI. Below following an example of how to call a EJB from a Java Stand-Alone client. http://www.javable.com/columns/serv_side/workshop/10/ch5/ Кажется понимаю идею. Что-то типа DNS. Надо понять где тут сокеты зарыты. Тогда мне понятно станет, а так пока не понятно. авторBy default, the appserv-rt.jar brings a jndi.properties file, but I will show you how to create one. Why? Because when you are running the client in the machine different than the app server, you must override this file. Кажется что-то понимаю. Есть файл, в котором как раз прописаны сокеты. Надо его найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 17:24:13 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
FAQ хотя бы прочитайте. Куча вопросов и ответов по вашей теме. http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html На счет сокетов. Когда создаётся InitialContext(), то там прописывается URL к JNDI через properties. Но если использовать на клиенте либы именно из GlassFish, то там всё по-умолчанию уже прописано для сервера. В том числе URL с портами. Об этом тоже есть в FAQ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 17:33:20 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Почитал FAQ и http://wiki.netbeans.org/CreatingEJB3UsingNetbeansAndGlassfish Нашёл готовый проект http://forum.sources.ru/index.php?showtopic=339968. Почему-то он работает, а мой проект не работает. И то с оговоркой - работает только из под NetBeans'а, а из командной строки не работает. Пробовал запускать так: java -classpath "C:\Program Files\glassfish-3.1.1\glassfish\modules" -jar "D:\Tasks\Java\MyRMI\ForumExample\ClientEJB\ClientEJB\dist\ClientEJB.jar" java -classpath $GLASSFISH_HOME/glassfish/lib/gf-client.jar D:\Tasks\Java\MyRMI\ForumExample\ClientEJB\ClientEJB\dist\ClientEJB.jar java -cp "C:\Program Files\glassfish-3.1.1\glassfish\modules\glassfish-naming.jar" -jar D:\Tasks\Java\MyRMI\ForumExample\ClientEJB\ClientEJB\dist\ClientEJB.jar java -cp "C:\Program Files\glassfish-3.1.1\glassfish\modules\gf-client.jar;C:\Program Files\glassfish-3.1.1\glassfish\lib\javaee.jar;C:\Program Files\glassfish-3.1.1\glassfish\lib\appserv-rt.jar;C:\Program Files\glassfish-3.1.1\glassfish\lib\jndi-properties.jar" -jar D:\Tasks\Java\MyRMI\ForumExample\ClientEJB\ClientEJB\dist\ClientEJB.jar Вылазиет вот это: Код: sql 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. Ну, ладно... Скопировал код найденного проекта под чистую в свой проект. Не работает! Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Включил в библиотеки каталоги C:\Program Files\glassfish-3.1.1\glassfish\modules и C:\Program Files\glassfish-3.1.1\glassfish\lib Включил в библиотеки файлы appserv-rt.jar и javaee.jar. Я так понимаю, раз код один и тот же, то проблема именно в подключаемых библиотеках. Есть у меня ещё 1 проект: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Там вот такие исключения: Код: sql 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. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. Что не так-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 12:35:39 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
не находит все библиотеки что используются. Надо найти и подключить. Можно в нетбинсе в том проекте что запускается открыть ветку либрариес и посмотреть что там подключено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 13:02:31 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Ну, да. Это да. Но он не работает из командной строки сам по себе почему-то, хотя и тащит 50 МБайт библиотек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 13:07:10 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
С библиотеками, кажется разобрался. Но всё же... Если выполнить файл из командной строки: java -jar D:\Tasks\Java\MyRMI\EJBClient\dist\EJBClient.jar То получается вот такое: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Читал где-то, что надо куда-то приткнуть Classpath... но что с ним делать и куда вписывать не понятно. По идее у меня и так все библиотеки лежат рядом с JAR'ником - какой ещё Classpath? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 14:23:41 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
в факе описано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 14:30:03 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
То что там написано я читал: Включить $GLASSFISH_HOME/glassfish/lib/gf-client.jar в клиентский classpath. Предполагается, что классы приложения лежат в /home/user1/myclasses и главный клиентский класс называется acme.MyClient. java -classpath $GLASSFISH_HOME/glassfish/lib/gf-client.jar:/home/user1/myclasses acme.MyClient Отметьте для себя, что классы Java EE 6 API автоматически включаются в gf-client.jar, поэтому нет необходимости явно добавлять javaee.jar и в classpath. gf-client.jar ссылается на многие другие .jars из дирректории, в которую был установлен GlassFish, поэтому лучше ссылаться на него из установочной дирректории, чем копировать его и все другие .jars в другие места. Помните, что gf-client.jar находится в $GLASSFISH_HOME/modules/gf-client.jar в GlassFish v3. Я пробовал так: java -classpath $GLASSFISH_HOME/glassfish/lib/gf-client.jar:D:\Tasks\Java\MyRMI\EJBClient\dist EJBClient.jar java -classpath $GLASSFISH_HOME/glassfish/lib/gf-client.jar:D:\Tasks\Java\MyRMI\EJBClient\src\rmiclient RMIClient.java java -classpath $GLASSFISH_HOME/glassfish/lib/gf-client.jar -jar D:\Tasks\Java\MyRMI\EJBClient\dist\EJBClient.jar java -classpath C:\Program Files\glassfish-3.1.1\glassfish\lib\gf-client.jar -jar D:\Tasks\Java\MyRMI\EJBClient\dist\EJBClient.jar Создал переменную окружения CLASSPATH=C:\Program Files\glassfish-3.1.1\glassfish\lib\gf-client.jar И ничего не работает! Хотя, стоп! Пересобрал... И начало работать вот так: Label1 Label2 Exception: javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory] Код: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. По крайней мере приложение запустилось! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 15:23:15 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000, Да сколько можно Вам одно и то же талдычить, что ClassNotFoundException выбрасывается тогда, когда не найдет необходимый класс. Вы ей-богу, как глухонемой. Прошу прощения за эмоциональность. Начиная с 3-го сообщения у Вас постоянно падает это исключение, неужели трудно сделать соответствующие выводы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 15:32:16 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВот и выросло поколение, которое пишет EJB и даже не знает что такое JNDI. Sun/Oracle своего добились. http://wiki.netbeans.org/CreatingEJB3UsingNetbeansAndGlassfish угу ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 16:06:48 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Мне не понятно как это так - в NetBeans работает, а само по себе нет. Начал подключать библиотеки из GlassFish Folder\modules и дошёл до этого: Код: sql 1. 2. 3. 4. В NetBeans это работает, а в консоли нет. Если добавить тупо все библиотеки, то не собирается, приходится как-то это вылавливать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 19:27:08 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. Патамушта ex.printStackTrace() надо использовать. Тогда станет ясно откуда NullPointerException. Рано вы за EJB взялись. Вам бы с Java разобраться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 19:31:23 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Рано или не рано, но мне надо разобраться. А с Java обычными приложениями для меня всё понятно более менее. Я пока не могу понять почему в NetBeans работает нормально, а в консоли ошибки. Наверное, библиотеки .jar в NetBeans'е все есть, а когда я запускаю из консоли, то приложение их не находит. Может быть вот этого не хватает: at com.sun.enterprise.naming.impl.SerialContext.getORB(SerialContext.java:365) at com.sun.enterprise.naming.impl.SerialContext.getProviderCacheKey(SerialContext.java:372) at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:402) at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:347) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:504) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455) Попробую поискать на jarvana.com Хотя com.sun.enterprise.naming.impl.SerialContext - это glassfish-naming.jar, который подключен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 21:02:25 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Смотрю я на это и вижу: Unable to acquire SerialContextProvider for SerialContext Что-то не так с SerialContextProvider for SerialContext... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 21:05:27 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Если на пальцах объяснять, то примерно так. За жизненным циклом компонентов и injection зависимостей отвечает контейнер. У тебя есть аннотация @EJB и контейнер такую аннотацию должен обработать. В Java EE есть три вида контейнеров: 1. EJB контейнер - разруливает зависимости EJB 2. Web контейнер - разруливает зависимости у web компонентов 3. Application контейнер (это как раз твой случай), разруливает зависимости у клиентских классов. Application контейнер зависит от поставщика, поэтому нужно смотреть документацию именно по серверу. NetBeans вся магию настройки Application контейнера берет на себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 22:03:29 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
vas0Если на пальцах объяснять, то примерно так. За жизненным циклом компонентов и injection зависимостей отвечает контейнер. У тебя есть аннотация @EJB и контейнер такую аннотацию должен обработать. В Java EE есть три вида контейнеров: 1. EJB контейнер - разруливает зависимости EJB 2. Web контейнер - разруливает зависимости у web компонентов 3. Application контейнер (это как раз твой случай), разруливает зависимости у клиентских классов. Application контейнер зависит от поставщика, поэтому нужно смотреть документацию именно по серверу. NetBeans вся магию настройки Application контейнера берет на себя. да нет в нетбинсе магии. При старте он в класспат указывает все библиотеки. Библиотеки можно посмотреть в дереве проекта в ветке либрариес. Как подключать библиотеки для запуска (в командной строке ключём, в переменной класспат или в манифесте жара) можно посмотреть в факе. это уже раз пять сказали. Нет смысла повторять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 22:56:48 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
1024, Не совсем так. Проблема ведь не в том что не все jar указаны. Грубого говоря, нужно получить stub`ы и запустить Application Client Container и уже "внутри" него свое приложение. Вот превое что нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 23:10:10 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
vas0, спасибо за ссылочку. http://blogs.steeplesoft.com/2011/02/java-ees-buried-treasure-the-application-client-container/ Внимательно всё почитал. Там создаётся Enterprise приложение. EJB-модуль, который затем deploy'тся на сервер. Потом создаётся Enterprise Client, который и есть ACC - application client container. Потом создаётся session bean и business method с удалённым интерфейсом. У меня это есть. Проблема с клиентом. Потом Enterprise Client deploy'тся, причём ручками из командной строки, на сервер. Если честно, не понял зачем. После того как клиетн был за'deploy'ен браузер обращается по адресу http://localhost:8080/EnterpriseApplication/ApplicationClient. Проходит пара минут в первый раз и как-то через JWS клиент запускается самостоятельно. Вот это я не понял. Как это происходит. После этого описываются XML и в конце говорится, что теперь вы знаете официальный путь что делать в случае, если этот клиент должен быть на удалённом хосте. So next time you need to access an EJB deployed to a remote application server, you know the official, portable way to get to it. В этих XML что-то я ничего такого не увидел - не увидел официального пути как это сделать. Сейчас попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 08:37:06 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Создал вот такое приложение: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Создал отдельный класс myJFrame, который просто рисует окошко с одним jLabel'ом и у которого есть метод установки текста jLabel'а. Немного повозившись с командной строкой, я за'deploy'л своё приложение так: asadmin deploy --retrieve G:\Java\MyRMI\ForumExample\EJBClientEnterprise\dist\localdir\ --force G:\Java\MyRMI\ForumExample\EJBClientEnterprise\dist\EJBClientEnterprise.ear Получилось. Но при попытке вызова приложения java -jar G:\Java\MyRMI\ForumExample\EJBClientEnterprise\dist\localdir\EJBClientEnterpriseClient.jar у меня получается вот это: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Если зайти на http://127.0.0.1:8888/EJBClientEnterprise/EJBClientEnterpriseClient.jar то браузер предлагает его скачать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 09:40:26 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Поколдовал ещё... За'deploy'ил из NetBeans'а. Только не кидайтесь в меня камнями, но у меня та же проблема... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Я знаю, что класс не найден ejb/HelloRemote, который находится в проекте Lib, но что с этим делать? Я подкладывал его в ту же дирректорию, где и исполняемый jar'ник, но результат такой же. По крайней мере приложение стартует и я хотя бы окошко вижу - JFrame. Но в JLabel ничего нету! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 10:20:44 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Эх, наверное я в тот раз напутал - скачал не то. За'deploy'ил всё ещё раз из NetBeans'а и зашёл сюда: http://127.0.0.1:8888/MyEnterpriseApplication/EJBClientEnterprise EJBClientEnterprise находится в составе с MyEnterpriseApplication. Браузер предложил скачать JNLP файл. Ладно. Я скачал. Положил его рядом с jar'ником и ничего... В NetBeans'е опять всё работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 10:31:11 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000, Я никогда не работал с Glassfish. Но общий подход такой. Наше ejb приложение условно должно состоять из 2 частей, это интерфейсов и их реализаций. Пакую наши интерфейсы в один jar. Потом пакуюем нашу реализацию с интерфейсами в другой jar. Деплоем второй jar на сервер. Теперь первый jar(c интерфейсами) подключаем к нашему десктоп приложению, а также подключаем клиентские библиотеки нашего сервера. В Jboss этот файл назывался jboss-client-all.jar. Теперь про ваш случай. У вас явно нет в classpath нужных библиотек, внимательно прочитайте в документации к серверу приложения что нужно тащить на клиента. Ещё одна важная деталь версии jar c интерфейсами должны совпадать с версией на сервере и клиенте. P.S JNLP - это Java Web Start ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 10:52:49 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Лазию по всему Internet'у. Везде все советуют указывать classpath. Например, тут: http://forum.vingrad.ru/forum/topic-308037/view-all.html У меня теперь есть 2 работающих из под NetBeans проекта. Пробую так: java -classpath "C:\Program Files\glassfish-3.1.1\glassfish\lib\gf-client.jar" -jar "G:\Java\MyRMI\EJBClient\dist\EJBClient.jar" java -classpath "C:\Program Files\glassfish-3.1.1\glassfish\lib\gf-client.jar" -jar "G:\Java\MyRMI\ForumExample\MyEnterpriseApplication\MyEnterpriseApplication\build\EJBClientEnterprise.jar" Ошибки все те же самые. Или что-то не так опять я делаю? Или надо как-то по-другому этот classpath задавать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 12:35:26 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Всё, я в тупике. Код: sql 1. Пришёл к одному и тому же и в Enterprise Application и в обычном Stand Alone Application: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Ошибка одинаковая. Выхода из неё не вижу. Задам вопрос по-другому: Хоть кто-нибудь когда-нибудь создавал подобные приложения? Они работают? И если создавал и работают, то на чём? На Glassfish? Я перепробовал всё classpath задавал как переменную окружения, вставлял в командную строку, подключал и отключал библиотеки в куче разных комбинаций - облазил весь Internet и нигде я не увидел, чтоб кто-то решил это и написал, что у него получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 15:02:05 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
GregTk А вот вы говорите по JBoss. А на JBoss вы делали это - удалённый GUI, который вызывает метод EJB на JBoss'е? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 15:06:27 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
OFF/2 авторИх там почти 200. Вы после каждой убранной библиотеки будете проводить полнообъемное тестирование? хорошо при статике.exe в виндах. При загрузке Ось проверяет сама все зависимости и выдаёт что не хватает (Handle.dll). Правда тоже по одной, а не списком :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 15:24:06 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000, Делал для версии Jboss 4.2.3 и Jboss 5.1, всё отлично работало. Как там в JBoss 6.0 незнаю, но там я уверен тоже самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 16:24:09 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000, ты должен перечислить в ключе ВСЕ библиотеки. И всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 17:48:05 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
В смысле ВСЕ? Вот как я перечислял: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Результат одинаковый во всех случаях. Ведь так же надо перечислять или как-то по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 18:32:49 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000, Я когда то запускал на GlassFish, чисто в целях эксперимента. Код: java 1. 2. 3. 4. Фактически в этом коде у тебя кто - то, должен сделать injection. И вместо интерфейса у тебя должно должна здесь появиться работающая заглушка, которая будет отвечать за взаимодействие с сервером. Вообщем то насколько я понимаю, модификацией class path ты эту проблему никогда не решишь. Фактически тебе нужно: 1 получить стабы, они генерируються при деплое приложения. 2 запустить Application Client Container 3 запуситить свое приложение. В той ссылке которую я приводил, была же последовательность команд (примерно так я и делал) asadmin deploy --retrieve localdir/ --force dist/EnterpriseApplication.ear asadmin get-client-stubs --appname EnterpriseApplication localdir appclient -jar localdir/EnterpriseApplicationClient.jar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 19:40:40 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
vas0 Спасибо ВАМ ОГРОМНОЕ!!! Кажется что-то получается!!! Выполнил вот эти 3 команды: Код: sql 1. 2. 3. Я распечатал эту инструкцию и ещё раз внимательно всё по ней сделал. Почему-то в предыдущий раз asadmin запросил у меня пароль на доступ к GlassFish. А я его не знал. И перепробовал всякие варианты - admin, adminadmin, 1, asadmin... но ничего не помогало! Потом я зашёл в админпанель GlassFish'а и сменил пароль там. Команда выполнилась, но с исключениями какими-то и после этого у меня что-то с GlassFish'ем началось - NetBeans перестал с ним дружить. Я переставил GlassFish. Потом я решил сделать это под VirtualBox'ом, предварительно сделав snapshot. Вроде получилось, но мне надо это осознать - как получилось. А откуда Enterprise-клиент будет знать с каким сервером ему соединяться? Наверное, надо указать дополнительные параметры команды asadmin, такие как host и port? Получается, что asadmin "настраивает" Enterprise Application Client'ов? Это такая скажем так "жёсткая" настройка получается. Надо будет на каждом клиенте выполнять эти команды каждый раз, когда необходимо настроить на соединение с определённым сервером. А на Linux'овых клиентах надо будет аналогичный действия проводить? А в той ссылке http://blogs.steeplesoft.com/2011/02/java-ees-buried-treasure-the-application-client-container/ Что там автор имел ввиду, когда говорилось "Хватит GUI! Дайте мне XML!"? Это он о чём вообще? Про Maven какой-то... Я посмотрел у себя - в своих проектах - нет у меня ничего подобного - у меня довольно-таки компактые Minifest'ы. Наверное, завтра попробую переделать это под удалённый сервер. А то сегодня я уже целый день за компом сижу... очень сильно устал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 22:01:52 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000, Так и не понял получилось у тебя что-нибудь или нет. Главное чтобы был прогресс. Кто в Java в EJB разобрался, тот в цирке не смеется. Я тут попробовал небольшой пример накидать, такой же как у тебя. После того как задеплоишь приложение появятся стабы ({glassfish.home}\domains\domain1\generated\xml\j2ee-apps\TestEAR\TestEARClient.jar) Ну и запуск "appclient -client TestEARClient.jar" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2012, 00:54:39 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
авторЯ тут попробовал небольшой пример накидать, такой же как у тебя. После того как задеплоишь приложение появятся стабы ({glassfish.home}\domains\domain1\generated\xml\j2ee-apps\TestEAR\TestEARClient.jar) А проект сам где? Ну, ладно. Я думаю у меня получилось. просто своим глазам уже не верю. Прилагаю картинку ещё одну. Кстати, в {glassfish.home}\domains\domain1\generated\xml тоже что-то есть, но stub у меня лежит рядом с проектом, так как в deploy-команде я указывал D:\Java\MyEJB\Enterprise1, то так stub у меня и лежит. А если мне надо будет, например, перенастроить моё приложение на работу с другим сервером, то опять генерировать stub'ы в командной строке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2012, 09:27:11 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000, Все, увидил что у тебя все заработало. Поздраляю. Параметры для работы с удаленным сервером (host и port) задаются при запуске "appclient ...", а не при генерации stub-ов "asadmin ...". У меня GlassFish достачно древний и "appclient -help" не работает и даже заведен такой дефект , но дефект вроде как уже давно исправлен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2012, 11:18:40 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Ну, да. Вроде работает, но только ваше приложение у меня почему-то не запустилось - вывалили вот такие ошибки: Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2012, 20:54:04 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000, Браво! Снова ClassNotFoundException! И, как обычно, никаких предположений :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2012, 22:46:54 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Большой Синий Кит Ну, в данном случае у меня был только .ear'ник. Действительно, у меня нет идей почему возникли эти исключения. Я вижу только, что не найден класс server.HelloWorld. И всё. Видимо, ClassNotFoundException - это болезнь какая-то. Сейчас мне надо поупражняться заливать это на удалённый GlassFish Server. И вызывать удалённый метод на удалённом сервере, а не на localhost. Принципиально это ничем, по идее, не отличается, но надо попробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 09:15:38 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000Большой Синий Кит Видимо, ClassNotFoundException - это болезнь какая-то. тебе несколько раз объяснили что такое ClassNotFoundException но ты настырно занимаешься чем-то другим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 09:18:55 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
1024, +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 09:25:57 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
тебе несколько раз объяснили что такое ClassNotFoundException но ты настырно занимаешься чем-то другим. Это Класс не найден. Всё понятно. Подключить его надо через classpath. Но у меня не подключалось. В данном случае у меня был ear'ник от vas0, но почему там ClassNotFoundException я не знаю. У меня другая проблема. Надо за'deploy'ть на удалённый GlassFish. Deploy'ю так: Код: sql 1. Перед этим на удалённом сервере надо выполнить: Код: sql 1. И перезапустить сервер. Но после выполнения команды: appclient -jar D:\Tasks\Java\Stubs\Enterprise1\EnterpriseApplication1Client.jar Вываливается вот это: Код: sql 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. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. Зачем он к localhost'у пытается-то присоединиться? Вот в чём вопрос! Он по идее должен соединяться с тем у кого stub'ы взяты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 12:39:33 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
нет тут никаких вопросов. Пока не подключишь ВСЕ библиотеки работать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 13:11:13 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
1024 авторнет тут никаких вопросов. Пока не подключишь ВСЕ библиотеки работать не будет. Извини, по-моему это не в тему. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Я создал другой проект - Enterprise Application, а не обычный Java Class. Библиотеки тут не причём в данном случае. С localhost всё работает. Почему-то моё Enterprise Application хочет только с localhost работать, а я хочу, чтоб он соединялся с 172.16.1.250. А явно это нигде не задаётся. Я думал, что при скачке stub'ов он сам привяжется к серверу, но нет. Надо думать как теперь клиента с сервером соединить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 13:40:41 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000Библиотеки тут не причём в данном случае. С localhost всё работает. Почему-то моё Enterprise Application хочет только с localhost работать, а я хочу, чтоб он соединялся с 172.16.1.250. В свойства InitialContext адрес передается или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 13:43:16 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
авторВ свойства InitialContext адрес передается или нет? В случае с обычным Java-классом вроде как да, но у меня он не пашет из-за того, что я не могу подключить ВСЕ библиотеки - не знаю набора ВСЕХ библиотек. ( http://www.sql.ru/forum/actualthread.aspx?tid=919879) А в случае с Enterprise приложением тоже что ли InitialContext надо задавать? Попробую... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 14:07:07 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000А в случае с Enterprise приложением тоже что ли InitialContext надо задавать? Да что же вы всё в одну кучу мешаете? У вас проблема в толстом клиенте? Причем здесь Enterprise приложение (aka JEE модуль)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 14:21:12 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Ну, да. В толстом клиенте. Просто раньше толстый клиент был обычным Java приложением, а теперь он стал Enterprise J2EE модулем. И вот этот толстый клиент в виде Enterprise J2EE модуля не соединяется с сервером приложений в Glassfish с EJB-модулем. А как заставить этого J2EE клиента соединиться не с localhost а с чем нибудь другим? Вот это пока вопрос! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 14:36:17 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczNiky4000А в случае с Enterprise приложением тоже что ли InitialContext надо задавать? Да что же вы всё в одну кучу мешаете? У вас проблема в толстом клиенте? Причем здесь Enterprise приложение (aka JEE модуль)? У человека проблема вообще с ява. Он ничего в ней не понимает, а лезет сразу в создание ежб бинов. Niky4000Просто раньше толстый клиент был обычным Java приложением, а теперь он стал Enterprise J2EE модулем. Надо записать! :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 14:39:40 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
vas0Кто в Java в EJB разобрался, тот в цирке не смеется. похоже ты прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 14:42:34 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
У человека проблема вообще с ява. Он ничего в ней не понимает, а лезет сразу в создание ежб бинов. Ну, ёлки... началось. Нет у меня никаких проблем. Надо записать! :)) Просто позавчера толстый клиент был Java-классом, а вчера стал Enterprise-приложением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 14:46:51 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000Почему-то моё Enterprise Application хочет только с localhost работать, а я хочу, чтоб он соединялся с 172.16.1.250 Код: java 1. 2. не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 14:52:26 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000Просто позавчера толстый клиент был Java-классом, а вчера стал Enterprise-приложением. И это тоже записать! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 15:00:51 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000Ну, ёлки... началось. Нет у меня никаких проблем. Вас очень сложно понять. Толстый клиент, это приложение, в котором JVM работает на стороне клиента и, зачастую, используется некоторый GUI фреймверк Swing. Толстый клиент не является JEE модулем, потому что он работает независимо от JEE контейнера. JEE модуль это war или ejb-jar, который развернут на JEE сервере. Постарайтесь придерживатся этой терминологии. То что контейнер подставляет в поля значения реальных бинов, называется IoC, DI, CDI. CDI работает только в JEE модуле. В толстом контейнере используется подход, известный как Service Locator. Создаётся InitialContext и через него получается доступ к удаленным службам сервера. Сам контекст одинаково работает как на сервере, так и на клиенте, с той лишь разницей, что у EJB бывают локальные интерфейсы, которые удаленно использовать нельзя. Теперь по поводу вашей проблемы с IP. Если создавать InitialContext черед дефолтный конструктор, с использованием библиотек сервера приложений, то в этом случае данные библиотеки пытаются вычитать конфигурацию из настроек сервера приложений. (Как это конкретно реализовано в GlassFish - не знаю) При создании InitialContext можно переопределять дефолтные значения, как выше указал grasoff.net. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 15:13:42 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
grasoff.netNiky4000Почему-то моё Enterprise Application хочет только с localhost работать, а я хочу, чтоб он соединялся с 172.16.1.250 Код: java 1. 2. не? Странно, но для GlassFish во многих примерах пишут, что нужно использовать "org.omg.CORBA.ORBInitialHost" для указания адреса. В том числе об этом написано в примере, ссылку на который уже привели выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 15:19:20 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000Я создал другой проект - Enterprise Application, а не обычный Java Class. Библиотеки тут не причём в данном случае. С localhost всё работает. Почему-то моё Enterprise Application хочет только с localhost работать, а я хочу, чтоб он соединялся с 172.16.1.250. А явно это нигде не задаётся. Я думал, что при скачке stub'ов он сам привяжется к серверу, но нет. Надо думать как теперь клиента с сервером соединить. Попробуй "appclient -jar D:\Tasks\Java\Stubs\Enterprise1\EnterpriseApplication1Client.jar -targetserver 172.16.1.250" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 15:38:50 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczнужно использовать "org.omg.CORBA.ORBInitialHost" для указания адресаахнуда я просто к тому, что надо каким-то образом указать урл ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 15:45:21 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
grasoff.netя просто к тому, что надо каким-то образом указать урл ) Да. Я что-то тупанул на этот счет в начале. Ведь у удаленноего клиента не может быть ссылки на настройки сервера, поэтому URL в том или ином виде нужно указывать в любом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 16:00:05 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
vas0 СПАСИБО! ЕЩЁ РАЗОК ОГРОМНОЕ!!! Всё получилось!!! Вот смертельная тройка команд: Код: sql 1. 2. 3. Первая deploy'ит EAR'ник! Вторая получает STUB'ы! А третья! Третья - самая убийственная команда - связывает клиента с удалённым GlassFish! А ещё вопросик: А может ли сервер инициировать что-то у клиентов по событиям сервера? Например, по таймеру? Или в случае, если условный "администратор" послал некое сообщение на сервер, которое сервер должен "раздать" всем клиентам, то есть сервер "инициирует" некие события у клиентов - сервер как бы возбуждает что-то у клиентов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2012, 15:05:48 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000, Тихий ужас, в jboss такого не было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2012, 15:57:57 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000А может ли сервер инициировать что-то у клиентов по событиям сервера? Например, по таймеру? Или в случае, если условный "администратор" послал некое сообщение на сервер, которое сервер должен "раздать" всем клиентам, то есть сервер "инициирует" некие события у клиентов - сервер как бы возбуждает что-то у клиентов?Первый вариант - JMS. Создаешь тему (Topic), клиенты подписчики (Subscribers). Сервер генерирует сообщения, клиенты его получают и обрабатывают. Здесь тебе только клиентского потребителя сообщений (Consumer) нужно написать, а дальше только правильно все сконфигурировать. Второй варинт JMХ. В JMХ, вроде бы, есть модель оповещения, возможно она может подойти, но я не уверен. Последний вариант, это придумать собственный протокол на уровне: Sockets, RMI и всю реализацию писать самому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2012, 15:57:58 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
GregTkjboss такого не былода в глассфише тоже без этого можно объодиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2012, 16:01:25 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
grasoff.net, как то не заметно, вон как ТС мучается :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2012, 18:17:50 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
GregTkgrasoff.net, как то не заметно, вон как ТС мучается :)всё от того, что люди мало читают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2012, 23:49:37 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
grasoff.netда в глассфише тоже без этого можно объодиться может немного поздно, но... вот что мне думается. Проблема в формировании InitialContext на стороне клиента. Например, для Weblogic-а все просто. Нужно клиенту подсунуть weblogic.jar, который содержит все необходимое (является самодостаточным), но он и весит около 50 метров. В глассфише перемудрили с ленивыми загрузками. В мануалах сказано, что клиенту для работы с аквариумом нужен лишь gf-client.jar (18 метров). НО! gf-client.jar начинает подгружать себе другие зависимости по ходу выполения. Подгружает он их как-то "не по пацански", что ли: ищет джарники в относительных путях как они лежат на GlassFish сервере. Поэтому, лично я нашел для себя простой (да избыточный, но моя ситуация позволяет) способ: я скопировал джарники с сервера на клиент (~40 метров) из glassfish\modules\. Список прилагается - как получил, уже не помню ;) На клиенте получаем контекст: Код: java 1. 2. 3. 4. 5. 6. 7. 8. В клиенте есть HelloRemote интерфейс. В Application.ear нет клиента вообще. Запускаем клиент: javaw -splash:./conf/Splash.jpg -classpath ./modules/gf-client.jar;./MyClient.jar -Dorg.omg.CORBA.ORBInitialHost=<hostName> com.client.swing.Main Если нужно JAAS, то в classpath отдельно прописывается security.jar (gf-client.jar на него не ссылается) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2012, 11:13:03 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
А ещё вопросик у меня 1 есть в эту тему: Утилита, которая запускает EnterpriseClient'а - это appclient. Она идёт в составе GlassFish'а. А отдельно её где можно взять? Или её из GlassFish'а нужно "вынуть"? Ну, не ставить же GlassFish всем клиентам из-за appclient'а... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2012, 09:23:28 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Я вспомнил про эту тему. Хочу сказать, что у меня наконец-то получилось сделать это - запустить удалённого клиента, который бы вызывал удалённые процедуры удалённых EJB-модулей. Рассказываю как это делается, может кому пригодится. GlassFish 3.1.2 NetBeans 7.1.2 Java 1.7 Необходимо включить в проект следующие библиотеки: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. А клиент в простейшем случае выглядит примерно так: Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2012, 16:41:41 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2131633]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
94ms |
get tp. blocked users: |
2ms |
| others: | 299ms |
| total: | 477ms |

| 0 / 0 |
