|
|
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
Задача такая: На сервере висит 1 процесс и раз в n сек. смотрит базу данных и прверяет ее на наличие новых данных на придмет обработки. Сделала так: Создал класс одиночку(Singleton) который и проверяет состояние базы данных. Создаю его экземпляр в сервлете, сервлет отрабатывает и процесс висит на сервере. Вроде все работает. А вообще правельный ли подход? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 12:32 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
А я бы через очереди и Message Driven Bean бы извратился ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 12:36 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
По моему мнению, если OC Windows, то имеет смысл создать службу, под UNIX - демона. В вашем случае не очень понятно, кто будет запускать процесс в случае рестарта сервера. Ну и предложение stdio так же мне нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 12:47 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
PlutЗадача такая: На сервере висит 1 процесс и раз в n сек. смотрит базу данных и прверяет ее на наличие новых данных на придмет обработки. Существует-ли возможность обработки факта получения новых данных вне-базы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 12:51 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
Музыка Александрне очень понятно, кто будет запускать процесс в случае рестарта сервераTomcat ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 12:55 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
stdioА я бы через очереди и Message Driven Bean бы извратился ;-) Дело в том что я мало имел дело с бинами :) Был некий опыт с Entity и Session Bean Но с другой стороны это как раз тот случай когда можно получить новые знания :) Как это реализовать в общих чертах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 12:57 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
mayton PlutЗадача такая: На сервере висит 1 процесс и раз в n сек. смотрит базу данных и прверяет ее на наличие новых данных на придмет обработки. Существует-ли возможность обработки факта получения новых данных вне-базы? Нет, то что поступили новые данные можно узнать только просмотрев базу данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 13:00 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ Музыка Александрне очень понятно, кто будет запускать процесс в случае рестарта сервераTomcat На самом деле так и надо бы сделать, только я еще не знаю как это организовать :) Не в настройках ли сервера это нужно прописывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 13:03 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
Plut Нет, то что поступили новые данные можно узнать только просмотрев базу данных Тогда - присоединяюсь к мнению stdio ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 13:04 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ Музыка Александрне очень понятно, кто будет запускать процесс в случае рестарта сервераTomcat Да, про load-on-startup = "true" я упустил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 13:04 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
мне такая архитектура кажется немного стремной было бы проще организоваться промежуточное звено (ejb, corba), через которое работали бы все пользователи базы, и в нем складывать информацию об обновлениях куда-нибудь, предоставляя их той программе, которая занимается обновлениями не совсем понятно, как ты поднимаешь процесс - создаешь новую jvm? или обработчик запроса сервлета находится в бесконечном цикле? полюбому было бы удобнее воспользоваться javax.ejb.Timer (EJB 2.1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 13:11 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
Plut stdioА я бы через очереди и Message Driven Bean бы извратился ;-) Дело в том что я мало имел дело с бинами :) Был некий опыт с Entity и Session Bean Но с другой стороны это как раз тот случай когда можно получить новые знания :) Как это реализовать в общих чертах?Создаём очередь ( если база Oracle, то очередь создаётся в ней). Все данные которые нужно обработать, посылаем в виде сообщений в очередь. Создаём MDB, настраиваем на очередь. И всё. Это вкратце. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 13:24 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
котымне такая архитектура кажется немного стремной Да мне тоже это не очень нравиться... котыне совсем понятно, как ты поднимаешь процесс - создаешь новую jvm? или обработчик запроса сервлета находится в бесконечном цикле? Точно - цикл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 13:34 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
повторюсь, ejb timer вам поможет. с удаленной инициацией цикла обработки тоже никаких проблем не будет - спокойно запустите в сервлете и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 13:40 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
котыповторюсь, ejb timer вам поможет. с удаленной инициацией цикла обработки тоже никаких проблем не будет - спокойно запустите в сервлете и все.а просто Timer? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 13:41 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ котыповторюсь, ejb timer вам поможет. с удаленной инициацией цикла обработки тоже никаких проблем не будет - спокойно запустите в сервлете и все.а просто Timer? в смысле "а просто"? бесконечный цикл в сервлете у человека уже есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 13:46 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
коты А.Грасоff™ котыповторюсь, ejb timer вам поможет. с удаленной инициацией цикла обработки тоже никаких проблем не будет - спокойно запустите в сервлете и все.а просто Timer? в смысле "а просто"? бесконечный цикл в сервлете у человека уже есть смысл в ejb? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 13:54 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ коты А.Грасоff™ котыповторюсь, ejb timer вам поможет. с удаленной инициацией цикла обработки тоже никаких проблем не будет - спокойно запустите в сервлете и все.а просто Timer? в смысле "а просто"? бесконечный цикл в сервлете у человека уже есть смысл в ejb? изначально вопрос был о правильности подхода использовать висящий сервлет - неправильно инициировать процесс обновления через http - неправильно использовать ejb - правильно инициировать процесс обновления удаленным или местным вызовом - правильно хотите поспорить? =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 14:09 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ котыхотите поспорить? =) а ты не думал о том, что у человека вообще может не быть j2ee-сервера? такие ограничения не были наложены в исходном посте однако если чел себе может позволить висящий сервлет, то поставить вместо tomcat - jboss не составит труда. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 14:16 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
котыоднако если чел себе может позволить висящий сервлет что такое - висящий сервлет? и чем это плохо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 14:19 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ котыоднако если чел себе может позволить висящий сервлет что такое - висящий сервлет? и чем это плохо? Plut котыне совсем понятно, как ты поднимаешь процесс - создаешь новую jvm? или обработчик запроса сервлета находится в бесконечном цикле? Точно - цикл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:09 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
котычто такое - висячий сервлет, и чем это плохо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:10 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ котычто такое - висячий сервлет, и чем это плохо? тебе нравится задавать однообразные тупые вопросы? >> что такое - висячий сервлет см. цитату выше >> и чем это плохо? вопрос был по архитектуре приложения ты себе представляешь, чё такое сервлет-контейнер? по-твоему, для обработчика http-запроса нормально застревать в бесконечном цикле? с другой стороны, мне совсем не интересно, что ты думаешь, так что можешь просто не отвечать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:19 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
коты А.Грасоff™ котычто такое - висячий сервлет, и чем это плохо? тебе нравится задавать однообразные тупые вопросы? >> что такое - висячий сервлет см. цитату выше >> и чем это плохо? вопрос был по архитектуре приложения ты себе представляешь, чё такое сервлет-контейнер? по-твоему, для обработчика http-запроса нормально застревать в бесконечном цикле? с другой стороны, мне совсем не интересно, что ты думаешь, так что можешь просто не отвечать :) ну на вопрос ты так и не ответил, что такое висячий сервлет. знаешь, чем сервлеты отличаются от cgi-скриптов? тем, что сервлет, однократно создавшись, "висит" в памяти и вызывается по мере надобности. это упрощенное толкование. и все сервлеты можно смело называть висячими. эту висячесть обеспечивает контейнер сервлетов, кстати. в бесконечном цикле "застревает" не обработчик http-запроса, а экземпляр singleton'a. //тебе нравится задавать однообразные тупые вопросы? да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:23 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
коты >> что такое - висячий сервлет см. цитату вышеизвините, я тоже не совсем понимаю, что такое висящий сервлет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:29 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
c каких пор сервлеты стали синглтонами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:35 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
johanna коты >> что такое - висячий сервлет см. цитату вышеизвините, я тоже не совсем понимаю, что такое висящий сервлет? во народ пошел :)) топикстартеру был задан вопрос -- не совсем понятно, как ты поднимаешь процесс - создаешь новую jvm? или обработчик запроса сервлета находится в бесконечном цикле? ответ был: -- Точно - цикл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:39 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
Pitbull terrierc каких пор сервлеты стали синглтонами?а с чего это следует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:41 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
коты johanna коты >> что такое - висячий сервлет см. цитату вышеизвините, я тоже не совсем понимаю, что такое висящий сервлет? во народ пошел :)) топикстартеру был задан вопрос -- не совсем понятно, как ты поднимаешь процесс - создаешь новую jvm? или обработчик запроса сервлета находится в бесконечном цикле? ответ был: -- Точно - цикл ответивший "Точно - цикл" понадеялся на твою догадливость и не стал подробно объяснять, где именно работает этот цикл. Он посчитал, что ты читаешь не только заглавный пост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:43 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™в бесконечном цикле "застревает" не обработчик http-запроса, а экземпляр singleton'a. если можно - подробнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:46 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
Pitbull terrier А.Грасоff™в бесконечном цикле "застревает" не обработчик http-запроса, а экземпляр singleton\'a. если можно - подробнее /topic/200989&pg=1#1712639 автор топика ... Создал класс одиночку(Singleton) который и проверяет состояние базы данных. Создаю его экземпляр в сервлете, сервлет отрабатывает и процесс висит на сервере. ... Еще подробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:48 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
может я что-то не так понимаю, но по-моему так как уже реализованно у автора топика- ОК. у меня, например, так: Tomcat запускается каждый день в 7 утра. в 7:30 запускается job через Spring и Quartz, который производит некоторое действия в базе. Принцип работы примерно такой же как и описанный автором топика. Чем это плохо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:50 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
johannaможет я что-то не так понимаю, но по-моему так как уже реализованно у автора топика- ОК. у меня, например, так: Tomcat запускается каждый день в 7 утра. в 7:30 запускается job через Spring и Quartz, который производит некоторое действия в базе. Принцип работы примерно такой же как и описанный автором топика. Чем это плохо?тем, что не ejb, очевидно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:51 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
коты johanna коты >> что такое - висячий сервлет см. цитату вышеизвините, я тоже не совсем понимаю, что такое висящий сервлет? во народ пошел :)) топикстартеру был задан вопрос -- не совсем понятно, как ты поднимаешь процесс - создаешь новую jvm? или обработчик запроса сервлета находится в бесконечном цикле? ответ был: -- Точно - цикл в бесконечном цикле "застревает" не сервлет, а экземпляр singleton'a. Кстати, подумалось, а можно из сервлета сделать singleton? Чем сервлет отличается от обычного java сласса кроме как extends HttpServlet ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 15:59 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
johannaможет я что-то не так понимаю, но по-моему так как уже реализованно у автора топика- ОК. у меня, например, так: Tomcat запускается каждый день в 7 утра. в 7:30 запускается job через Spring и Quartz, который производит некоторое действия в базе. Принцип работы примерно такой же как и описанный автором топика. Чем это плохо? вы томкету ему полчаса на запуск отвели? разумно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 16:05 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
ага, прочитала еще раз первое сообщение(после обеда мозги не сразу варят) автора топика. в принципе все верно, только подход не очень верный(на мой взгляд). Этот ваш класс-singleton должен не из сервлета запускаться, а через Listener, которого вы прописываете в web.xml и котороый запускает ваш класс-singleton. Т.е. томcат стартует, и сначала инициализируется ваша application, соответственно инициализируется ваш Listener, который и запускает ваш класс-singleton в цикле. in web.xml Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 16:31 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
не в tomcate, а в своей web-app ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 16:36 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
johannaне в tomcate, а в своей web-app :) а так: поддержка листенеров в каком томкате появилась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 16:37 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
johannaага, прочитала еще раз первое сообщение(после обеда мозги не сразу варят) автора топика. в принципе все верно, только подход не очень верный(на мой взгляд). Этот ваш класс-singleton должен не из сервлета запускаться, а через Listener, которого вы прописываете в web.xml и котороый запускает ваш класс-singleton. Т.е. томcат стартует, и сначала инициализируется ваша application, соответственно инициализируется ваш Listener, который и запускает ваш класс-singleton в цикле. in web.xml Код: plaintext 1. 2. 3. а почему бы тогда просто не сделать обычное приложение с Thread.sleep ? =)))) какой смысл? PS. должен быть ServletContextListener PS1. в 5.0 точно есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 16:52 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ johannaне в tomcate, а в своей web-app :) а так: поддержка листенеров в каком томкате появилась? а вообще это часть спецификации Servlet, 2.3 наверняка, но не смарел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 16:53 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
коты А.Грасоff™ johannaне в tomcate, а в своей web-app :) а так: поддержка листенеров в каком томкате появилась? а вообще это часть спецификации Servlet, 2.3 наверняка, но не смарел зачем говорить то, в чем не уверен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 16:55 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
коты а почему бы тогда просто не сделать обычное приложение с Thread.sleep ? =)))) какой смысл? ничего не говорит против такого решения, если нет web-application. просто, если уже есть web-application то почему бы и не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 17:00 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ листенеры в каком томкате появились? точно не знаю, но в четверке уже было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 17:11 |
|
||
|
Техника программирования
|
|||
|---|---|---|---|
|
#18+
Маленькое добавление, если позволите. Сервлет с точки зрения его работы и есть класс-singleton только управляет им контейнер (если вы не используетс SingleThreadModel - который режим сейчас объявлен устаревшим решением). Задействовать EJB только для проверки состояния какой-нибудь одной или двух таблиц базы - все равно, что из пушки по воробьям. И вообще говоря, почему бы ПОТОКУ в бесконечном цикле не засыпать на время, а потом проснувшись выполнять задачу проверки. Для простой проверки это вполне допустимо. Господин Грасофф задавал вовсе не глупые вопросы, а с подвохом (можно ему в очередной раз поаплодировать). Другой вопрос, как проверять, если изменений много и это Oracle, то и в предлженной автором топика конструкции можно задействовать AQ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 17:32 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2151938]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 409ms |

| 0 / 0 |
