|
|
|
Не работает JMS Durable Subscriber
|
|||
|---|---|---|---|
|
#18+
Стараюсь зделать Durable Subscriber на проекте JSF, Glassfish 3.1.2. Код бина: Код: java 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. init() - создаю конект до JMS провайдера и сесию. destroy() - закриваю подписку и коннект startConnection() - создаю подписку stopConnection() - приостанавливаю конект. Когда пытаюсь вызвать метод startConnection() , то на строке this.durableSubscriber = session.createDurableSubscriber(topic,this.subName); вилетает такое: Код: java 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. Все делаю как написано в туториале. Просто й Topic Subscriber работает нормально. Метод connection.stop(); тоже не работает. На гласфише есть примеры по JMS Durable Subscriber, там не веб проект а десктоп с одним методом main, в нем работает нормально. Вобщем если кто-то работал з JMS Durable Subscriber на GlassFish то помогите! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 09:47:15 |
|
||
|
Не работает JMS Durable Subscriber
|
|||
|---|---|---|---|
|
#18+
Вот исходники: http://grepcode.com/file/repo1.maven.org/maven2/org.glassfish.mq/imqutil/4.5.2/com/sun/messaging/jmq/jmsserver/core/Subscription.java Как видно, NullPointerException вылетает, если не выставлен clientId или durableName. Надо просто аккуратненько пройтись в дебагере, и посмотреть откуда должны прийти clientId и durableName, и выставить их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 10:35:50 |
|
||
|
Не работает JMS Durable Subscriber
|
|||
|---|---|---|---|
|
#18+
Так и есть, смотрите на строчку 1597: http://grepcode.com/file/repo1.maven.org/maven2/org.glassfish.mq/jms/4.5.2/com/sun/messaging/jms/ra/DirectSession.java#1597 Он берет clientId из Connection. Так что просто проставьте clientId, и проблема уйдет. Вообще, не бойтесь копаться в исходниках. NullPointerException - это явный баг. А потому вряд ли вам кто-то по нему сразу ответит: "Да у меня такое было, решилось так-то". Нужно просто немного усилий приложить, и вы увидите, что все прекрасно решается самостоятельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 10:44:53 |
|
||
|
Не работает JMS Durable Subscriber
|
|||
|---|---|---|---|
|
#18+
cdtyjv, Спасибо. Сперва нужно розобратся что такое grepcode.com )) Качаю исходники пока из http://download.java.net/mq/open-mq/4.5/b29-fcs/openmq4_5-source.zip Есть такой метод как connection.setClientID("someId"); Но он глючит как и connection.stop(); Код: java 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. Щас посмотрю в исходниках... Просто странно что очень немного инфи по этой проблеме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 11:03:54 |
|
||
|
Не работает JMS Durable Subscriber
|
|||
|---|---|---|---|
|
#18+
Значит clientId надо выставлять как-то иначе. Скорее всего, на уровне конфигурации connection factory. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 11:17:54 |
|
||
|
Не работает JMS Durable Subscriber
|
|||
|---|---|---|---|
|
#18+
cdtyjv, Да, clientId указан в настройках фабрики. И если в дебагере в методе init() посмотреть на clientId в connect, то он заполнен. Но когда вызывается метод startConnection(), то clientId равен null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 12:05:50 |
|
||
|
Не работает JMS Durable Subscriber
|
|||
|---|---|---|---|
|
#18+
Ясно почему не работают методы : connection --> setClientID(""), stop(), setExceptionListener В самом connection есть переменная Код: java 1. 2. 3. 4. 5. Вот она и блокирует эти методы. Но бог с ними... Я не могу создать createDurableSubscriber, потому, что clientId = null. Его зануляет метод cleanup() из класа com.sun.messaging.jms.ra.ManagedConnection. Пока не могу понять почему он срабатывает. Метод который должен его вызывать под дебагером не останавливается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 15:04:59 |
|
||
|
Не работает JMS Durable Subscriber
|
|||
|---|---|---|---|
|
#18+
может у тебя несколько инстансов создается? причем один из них неправильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 15:20:09 |
|
||
|
Не работает JMS Durable Subscriber
|
|||
|---|---|---|---|
|
#18+
Перенес создание connection, session, DurableSubscriber , в онид метод: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Работает. Напомню что это jsf и методы я вызиваю из браузера: Код: html 1. 2. 3. 4. 5. И тоб-то если сперва вызывать init(), а потом startConnection() в двух разных http-запросах, то возникает черная магия и connection странным образом портиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 16:15:01 |
|
||
|
Не работает JMS Durable Subscriber
|
|||
|---|---|---|---|
|
#18+
Использовал для Durable Subscriber - Message Driven Bean. Все работает: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Теперь думаю зделаю на Producer(отправляет JMS сообщения ) транзакцию Код: java 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. И что вы думаете? Когда я вызываю метод commit() , то session оказывается без транзакции! Подобная хрень все время творится на JSF, в апликейшн приложениях все работает... Скажыте это реально зделать JMS на JSF Glassfish ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 09:44:56 |
|
||
|
Не работает JMS Durable Subscriber
|
|||
|---|---|---|---|
|
#18+
Так Настроил Topic и ConnectionFactory через утилиту imqadmin.exe, которая примерно находится в C:\glassfish3\mq\bin Подтянул их в бин через: Код: java 1. 2. 3. 4. 5. 6. 7. 8. И таки смог создать Durable subscriber. Не знаю почему, но если настроивать Topic и ConnectionFactory через Glassfish, то возникает ошибка, clientId в connection зануляется. Почему это происходит не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 17:58:07 |
|
||
|
Не работает JMS Durable Subscriber
|
|||
|---|---|---|---|
|
#18+
Такой еще вопрос... Если я JMS брокер находится например 123.123.123.123, а програма клиент, которая должна получать сообщения на 31.31.31.31. То мне нужно вытятуть административные обьекты з 123.123.123.123, ConnectionFactory, Destination? Через механизм JNDI? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2013, 10:03:36 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38396396&tid=2128598]: |
0ms |
get settings: |
34ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
45ms |
get topic data: |
17ms |
get forum data: |
4ms |
get page messages: |
93ms |
get tp. blocked users: |
3ms |
| others: | 287ms |
| total: | 514ms |

| 0 / 0 |
