|
|
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть пример с таймеров для EJB "timersession". В него добавляю код по отправке сообщения в очередь JMS, но получаю Exception: java.lang.NullPointerException при создании connection = connectionFactory.createConnection(). В AppServ фабрика и очередь созданы. При запуске отдельно отправки сообщения через AppClient.bat работает. Возможно при работе из EJB нужно указать путь к JNDI? Подскажите, в чём может быть проблема? AppServ: Glassfish 3+ Класс таймера: Код: 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. Класс отправки сообщения: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 12:15:28 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
pulp, Код: java 1. 2. а потом Код: java 1. Проблема в том что некому делать Injection в произвольный класс. Используй JNDI lookup ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 12:23:36 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
vas0, не понял. Ведь в так и сделано, в начале класса Producer есть @Resource(lookup = "jms/ConnectionFactory") А в методе таймера automaticTimeout() создание экземпляра: Producer p = new Producer(); Или создать экземляр Producer в самом классе? Уточни пож. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 12:29:27 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Добрый день, pulp! > Ведь в так и сделано, в начале класса Producer есть > @Resource(lookup = "jms/ConnectionFactory") Только кто её читать будет, эту аннотацию? Она работает, только если класс описан как @Stateless (ну или ещё как) и он не создаётся в Вашем коде. Т.е. в TimerSessionBean будет @EJB Producer producer; > А в методе таймера automaticTimeout() создание экземпляра: > Producer p = new Producer(); А вот так делать нельзя :) -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 12:39:00 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
А если оба класса в рамках одного сервиса - всё равно так нужно делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 13:55:20 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Добрый день, pulp! > А если оба класса в рамках одного сервиса Это о чём вообще? Что значит один сервис? Ещё раз- если ты вызвал конструктор сам, то аннотации не работают. Вообще (ну если не самому их разбирать). -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 14:02:46 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Как-то не взлетает (( А интерфейс в этом случае нужно объявлять для метода go() класса Producer? Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 14:11:26 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Добрый день, pulp! > Как-то не взлетает (( Код какой? > А интерфейс в этом случае нужно объявлять для метода go() класса Producer? А, да, забыл- интерфейс нужен. Инъектить бин напрямую никак нельзя :) -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 14:22:14 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Код: 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. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: 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. Выдает ошибку в лог сервера: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 14:40:56 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Добрый день, pulp! > @EJB > ProducerBean producer; Я ж уже сказал, что ошибся- надо писать @EJB ProducerLocal producer; Ну и вместо описания ProducerBean приведено дважды TimerSessionBean зачем-то. На всякий случай- над Код: sql 1. 2. -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 14:50:07 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Заменил на Код: java 1. 2. и продеплоилось без ошибки. Но поведение не соответствует. Пока даже без JMS, вызываю метод tst() "вывод в лог", но вывода нет. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 15:06:00 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
При вызове producer.tst() ошибка: javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 15:18:30 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Добрый день, pulp! > При вызове producer.tst() ошибка: > javax.ejb.EJBException: javax.ejb.CreateException: Could not create > stateless EJB Как вызываешь-то? -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 15:33:54 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
В TimerSessionBean срабатывает таймер automaticTimeout. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 16:32:17 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Добрый день, pulp! > В TimerSessionBean срабатывает таймер automaticTimeout. Код пиши, код! И стэктрейс ошибки с привязкой номеров строк к коду. -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 16:43:52 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Код: 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. Код: java 1. 2. 3. 4. 5. 6. 7. 8. Код: 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. В классе TimerSessionBean в методе automaticTimeout при обращении к producer.tst(); возникает ошибка: javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 16:51:07 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Добрый день, pulp! > javax.ejb.EJBException: javax.ejb.CreateException: Could not create > stateless EJB Это не стектрейс. -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 17:29:53 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Стектрейс ошибки: [#|2012-10-15T09:36:00.014+0400|SEVERE|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=122;_ThreadName=Thread-2;|javax.ejb.EJBException: javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:454) at com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:2547) at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1899) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212) at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:89) at $Proxy122.tst(Unknown Source) at timersession.ejb.TimerSessionBean.automaticTimeout(TimerSessionBean.java:55) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052) at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124) at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388) at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundTimeout(SystemInterceptorProxy.java:149) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370) at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360) at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348) at com.sun.ejb.containers.BaseContainer.callEJBTimeout(BaseContainer.java:4058) at com.sun.ejb.containers.EJBTimerService.deliverTimeout(EJBTimerService.java:1832) at com.sun.ejb.containers.EJBTimerService.access$100(EJBTimerService.java:108) at com.sun.ejb.containers.EJBTimerService$TaskExpiredWork.run(EJBTimerService.java:2646) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) Caused by: javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:726) at com.sun.ejb.containers.util.pool.NonBlockingPool.getObject(NonBlockingPool.java:247) at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:449) ... 37 more Caused by: javax.ejb.CreateException: Could not create stateless EJB at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:534) at com.sun.ejb.containers.StatelessSessionContainer.access$000(StatelessSessionContainer.java:95) at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:724) ... 39 more Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Unresolved Message-Destination-Ref timersession.ejb.ProducerBean/queue@java.lang.String@null into class timersession.ejb.ProducerBean: Illegal use of static field on class that only supports instance-based injection: private static javax.jms.Queue timersession.ejb.ProducerBean.queue at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:703) at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:470) at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:171) at com.sun.ejb.containers.BaseContainer.injectEjbInstance(BaseContainer.java:1694) at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:494) ... 41 more Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Illegal use of static field on class that only supports instance-based injection: private static javax.jms.Queue timersession.ejb.ProducerBean.queue at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:618) ... 45 more |#] [#|2012-10-15T09:36:00.014+0400|SEVERE|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=122;_ThreadName=Thread-2;| at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:454)|#] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2012, 09:39:01 |
|
||
|
Как отправить сообщение JMS из EJBSession компонента?
|
|||
|---|---|---|---|
|
#18+
Добрый день, pulp! > com.sun.enterprise.container.common.spi.util.InjectionException: Illegal > use of static field on class that only supports instance-based > injection: private static javax.jms.Queue Ну вот же английским по белому написано- нельзя помечать аннотациями для сервера (@EJB, @Resource и т.п.) статические поля. -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2012, 09:48:13 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37995841&tid=2130774]: |
0ms |
get settings: |
17ms |
get forum list: |
22ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
60ms |
get topic data: |
18ms |
get forum data: |
6ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
| others: | 303ms |
| total: | 527ms |

| 0 / 0 |
