|
|
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
120 секунд Странно... А у меня висел сутки и не отваливался. Может быть у меня какой-то Glassfish необычный? У меня 3.1.2. Попробую тогда сделать создание и удаление фалов в качестве эксперимента, а до этого был вечный цикл под отладчиком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2012, 14:37:26 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Niky4000У меня 3.1.2мне кажется, что с 3.0 будет такой же результат ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2012, 15:12:43 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Niky4000120 секунд Странно... А у меня висел сутки и не отваливался. Может быть у меня какой-то Glassfish необычный? У меня 3.1.2. Попробую тогда сделать создание и удаление фалов в качестве эксперимента, а до этого был вечный цикл под отладчиком. О каком еще таймаутие идет речь? Код: java 1. 2. 3. 4. 5. 6. 7. Это что за жесть? В MDB не нужно никаких бесконечных циклов и.т.д Метод onMessage сам отработает когда вернется новое сообщение. Я бы вам советовал сформулировать требования не на колбасе, а техническими терминами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2012, 14:59:58 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
OOsalivanNiky4000пропущено... Странно... А у меня висел сутки и не отваливался. Может быть у меня какой-то Glassfish необычный? У меня 3.1.2. Попробую тогда сделать создание и удаление фалов в качестве эксперимента, а до этого был вечный цикл под отладчиком. О каком еще таймаутие идет речь? Код: java 1. 2. 3. 4. 5. 6. 7. Это что за жесть? В MDB не нужно никаких бесконечных циклов и.т.д Метод onMessage сам отработает когда вернется новое сообщение. Я бы вам советовал сформулировать требования не на колбасе, а техническими терминамиты вот хуйню сейчас сказал и спросил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 00:18:43 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
grasoff.netOOsalivanпропущено... О каком еще таймаутие идет речь? Код: java 1. 2. 3. 4. 5. 6. 7. Это что за жесть? В MDB не нужно никаких бесконечных циклов и.т.д Метод onMessage сам отработает когда вернется новое сообщение. Я бы вам советовал сформулировать требования не на колбасе, а техническими терминамиты вот хуйню сейчас сказал и спросилпотому что у человека вопрос - более академического характера ниче нет плохого в том, что он пытается выяснить как работает mdb и ниче нет плохого в этом цикле почему тебя не возмутило, что я во временный файлы пишу 100 тысяч раз слово сранаябулка? а потом удаляю эти временные файлы ведь с точки зрения нормального человека - это бред и дебилизм а уж с точки зрения психолога - ой-ой-ай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 00:21:51 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#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. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Ну никак (Thu Nov 15 08:56:20 GST 2012 - Thu Nov 15 08:49:37 GST 2012) != 120 секунд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 09:02:15 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Попробовал повторить тоже самое на Linux: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Вот что в Log'ах Сервера: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. По логам видно, что по крайней мере всё работает больше 120 секунд и ничего не отваливается, никаких исключений и никаких TimeOut'ов нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 09:58:20 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Niky4000, Да и не будет у Вас таймаута с Auto-acknowledge. Порочная эта практика в mdm что-то долгоиграющее запихивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 10:52:09 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Да и не будет у Вас таймаута с Auto-acknowledge. Порочная эта практика в mdm что-то долгоиграющее запихивать. А куда что-то "долгоиграющее" запихивать? Идея что-то "долгоиграющее" вот в это запихивать: Код: sql 1. Мне не нравится. А во что ещё можно запихнуть что-то "долгоиграющее", если это "долгоиграющее" принципиально существует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 11:21:55 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Можно создавать свои потоки причем вполне по феншую с WorkManager-ами, Work-ами и пулами. Ипусть булькают в низком приоритете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 11:56:15 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Можно создавать свои потоки причем вполне по феншую с WorkManager-ами, Work-ами и пулами. Ипусть булькают в низком приоритете. А по подробнее... Просто Message Driven Bean выполняется, по всей видимости, в высоком приоритете и сервер не тормознёшь, пока они не завершат своё выполнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 12:20:59 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Niky4000Можно создавать свои потоки причем вполне по феншую с WorkManager-ами, Work-ами и пулами. Ипусть булькают в низком приоритете. А по подробнее... Просто Message Driven Bean выполняется, по всей видимости, в высоком приоритете и сервер не тормознёшь, пока они не завершат своё выполнение. Какой смысл в EJB собственные потоки городить? это противоречит идеологии. Уже говорили что подобные ситуации решаются асинхронными бинами . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 12:46:28 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
OOsalivan, Полностью согласен, но это если 3.1 есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 14:49:34 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Какой смысл в EJB собственные потоки городить? это противоречит идеологии. Какой ещё идеологии? Порочная эта практика в mdm что-то долгоиграющее запихивать. А какова тогда их сфера применения? Ведь небольшие недолгие операции можно при помощи Stateless легко решить. Мне нужно запустить процесс, который может выполняться довольно-таки долго, например, час или день. Message Driven Bean для меня самое то, единственное неудобство в том, что пока он не отработает сервер тормознуть невозможно штатным образом, например, это может понадобиться в процессе отладки или разработки. Попробую посмотреть что такое эти асинхронные бины и что с ними делать можно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 19:13:46 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Niky4000Мне нужно запустить процесс, который может выполняться довольно-таки долго, например, час или день. найди такой процесс. Если это СУБД, то боюсь это противоречит её идеологии)))). Тут уже СУБД отвалится по таймауту. Т.е. найди жизненный пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 19:49:05 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
найди такой процесс. Если это СУБД, то боюсь это противоречит её идеологии)))). Тут уже СУБД отвалится по таймауту. Т.е. найди жизненный пример. Формирование сложного отчёта с кучей join'ов, например, Jasper Report --> xls. Может выполняться довольно-таки долго. А почему это СУБД отвалится. Я, например, как-то писал хранимую процедуру, которая может неделю работать. Ничего не отваливалось. Кстати, вот, поэкспериментировал: Код: 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. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Есть сервлет, который вызывает асинхронный newSessionBean.some(). Если убрать @Asynchronous, то вызов станет синхронным и браузер висит до тех пор, пока newSessionBean.some() не отпустит сервлет. Что интересно, браузер сразу же отображает страничку, а в логах сервер идут "Hello World". Я зашёл на страничку с сервлетом 2 раза и запустил 2 асинхронных потока, что видно в логах, которые независимо друг от друга выполняются, потом я запустил ещё 2 потока и тормознул сервер, как видно, мне это, в отличие от Message Driven Bean, ничто сделать не помешало! Надо бы ещё поэкспериментировать с TimeOut'ами. Есть ли какие-то TimeOut'ы у этих асинхронных бинов. Ну, вообще выглядит это всё проще. Вызов проще, работает как демон и не надо прописывать никаких ресурсов на сервере, в отличие от Message Driven Bean. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 20:27:13 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Niky4000найди такой процесс. Если это СУБД, то боюсь это противоречит её идеологии)))). Тут уже СУБД отвалится по таймауту. Т.е. найди жизненный пример. Формирование сложного отчёта с кучей join'ов, например, Jasper Report --> xls. Может выполняться довольно-таки долго. А почему это СУБД отвалится. Я, например, как-то писал хранимую процедуру, которая может неделю работать. Ничего не отваливалось. Кстати, вот, поэкспериментировал: Код: 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. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Есть сервлет, который вызывает асинхронный newSessionBean.some(). Если убрать @Asynchronous, то вызов станет синхронным и браузер висит до тех пор, пока newSessionBean.some() не отпустит сервлет. Что интересно, браузер сразу же отображает страничку, а в логах сервер идут "Hello World". Я зашёл на страничку с сервлетом 2 раза и запустил 2 асинхронных потока, что видно в логах, которые независимо друг от друга выполняются, потом я запустил ещё 2 потока и тормознул сервер, как видно, мне это, в отличие от Message Driven Bean, ничто сделать не помешало! Надо бы ещё поэкспериментировать с TimeOut'ами. Есть ли какие-то TimeOut'ы у этих асинхронных бинов. Ну, вообще выглядит это всё проще. Вызов проще, работает как демон и не надо прописывать никаких ресурсов на сервере, в отличие от Message Driven Bean. Ну и что будет если сеть отвалится?возьми дергани сетевой шнурок). Вообще я так и не понял что вам в итоге надо. Могу рассказать как сделано у нас нечть подобное, и может дам вам пищу для размышлений. Во-первых такого понятия как стандартный таймаут в EJB и JMS-спеках нет, все это сугубо специфично для сервера, и обычно конфигурируемо. Если у вас приложение под определенный сервер(у нас WebLogic) - то сконфигурируйте jms b все ок - такой подход вполне нормален. Во-вторых долгие асинхронные операции в рамках jms -это вполне нормальный подход. В-третьих, я не понимаю что значит mdb мешает перестартовать сервер. Речь не может идти о продакшен сервере - так как на продакшен недопустиммо пускать непротестированный код, а если речь идет о локальном сервере или тестовом - команда kill вам всегда поможет. Тут есть один момент - чтобы не терять проделанную работу, надо проаналзировать задачу(долгий процесс) и определить safe-pointы, и когда процесс заработает то он должен с некоторым интервалом достигать этих сейфпоинтов, чтобы при следующем перезапуске начинать не с начала а с последенго сейфпоинта. А теперь кратко как это работает у нас - Само приложение - это система по наблюдению за здоровьем людей. У нас есть огромное количество юзеров, которые постоянно ходят на фитнесс, проходят медобследования, проходят курсы по питанию и тп - все это приходит к нам в базу асинхронно через ESB, иногда с опозданием. Так вот ночью, когда самая маленькая загрузка у нас шедулится процесс -RecommendationProcess - именно как MDB, он делает следующее - подымает всех юзеров, у которых есть необработанные события. И в цикле анализирует каждого юзера и в итоге ставит ему диагноз или дает рекомендации. В данном случае сейфпоинт - это обработка одного конкретного юзера. То есть если даже вырубится электричество и тп - то мы рестартуем процесс и он обрабатывает только необработанных пользователей. Система работает уже 3 года - полет нормальный. Процесс длится 3-4 часа,завели специальную очередь для него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 21:21:06 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Речь не может идти о продакшен сервере - так как на продакшен недопустиммо пускать непротестированный код, а если речь идет о локальном сервере или тестовом - команда kill вам всегда поможет. Сервер тестовый. Попробовать так или как-то по-другому... разные варианты реализации. Ну, вот как-то был у меня прецедент, когда я грохнул сервер так, и после этого он перестал запускаться - при старте валил кучу исключений и не стартовал. Я стараюсь сервер как-то более штатно вырубать. В-третьих, я не понимаю что значит mdb мешает перестартовать сервер. Ну, что значит? Значит, что если есть mdb-поток, если можно так выразиться, то: INFO: Server shutdown initiated ... INFO: Server shutdown initiated ... INFO: Server shutdown initiated ... А сервер всё равно не останавливается до тех пор пока этот mdb-поток (или потоки) не завершится. Кстати, вот результаты тестов: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Час отработал. Ну, да в принципе, этот способ даже лучше, чем mdb, так как у mdb есть ещё какая-то заморочка с передачей объектов - там как-то это всё замороченней, чем с асинхронным session bean. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 21:53:11 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
Niky4000А почему это СУБД отвалится. Я, например, как-то писал хранимую процедуру, которая может неделю работать. Ничего не отваливалось. я о чем и говорю. Делают хранимку "Закрытеи оперДня" - запускают её АСИНХРОННО с клиента. После запуска в СУБД висит процесс. СУБД работает. А коннект с клиентом не нужен. И твой процесс на трое суток НЕ НУЖЕН. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 22:07:40 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
забыл никТак вот ночью, когда самая маленькая загрузка у нас шедулится процесс -RecommendationProcess - именно как MDB +1 этот вариант, если БЛ не в ХП в СУБД, а на АппСервере. Длинный процесс из 4 часов состоит из бизнес-транзакций на одного юзверя. Поэтому всё логично. Чем аффтатру не подходит - я не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 22:17:33 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
какой ужас... процедур работающие неделями... mdb запускаете на сутки. Может вам java только мешает своими "идеалогиями"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 22:29:34 |
|
||
|
Можно ли через MessageDrivenBean выполнять какие-то длительные операции?
|
|||
|---|---|---|---|
|
#18+
ИМХО "Длинные операции" лучше выполнять средствами СУБД (в Oracle для этого есть dbms_scheduler) и там же сохранить результат (например в табличку в поле с типом CLOB). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2013, 20:58:53 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38042668&tid=2129660]: |
0ms |
get settings: |
19ms |
get forum list: |
27ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
65ms |
get topic data: |
22ms |
get forum data: |
6ms |
get page messages: |
119ms |
get tp. blocked users: |
3ms |
| others: | 291ms |
| total: | 566ms |

| 0 / 0 |
