powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Техника программирования
46 сообщений из 46, показаны все 2 страниц
Техника программирования
    #33171040
Plut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача такая:
На сервере висит 1 процесс и раз в n сек. смотрит базу данных и прверяет ее
на наличие новых данных на придмет обработки.

Сделала так:
Создал класс одиночку(Singleton) который и проверяет состояние базы данных.
Создаю его экземпляр в сервлете, сервлет отрабатывает и процесс висит на сервере.
Вроде все работает.

А вообще правельный ли подход?
...
Рейтинг: 0 / 0
Техника программирования
    #33171056
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я бы через очереди и Message Driven Bean бы извратился ;-)
...
Рейтинг: 0 / 0
Техника программирования
    #33171099
По моему мнению, если OC Windows, то имеет смысл создать службу, под UNIX - демона. В вашем случае не очень понятно, кто будет запускать процесс в случае рестарта сервера. Ну и предложение stdio так же мне нравится.
...
Рейтинг: 0 / 0
Техника программирования
    #33171114
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlutЗадача такая:
На сервере висит 1 процесс и раз в n сек. смотрит базу данных и прверяет ее
на наличие новых данных на придмет обработки.


Существует-ли возможность обработки факта получения новых
данных вне-базы?
...
Рейтинг: 0 / 0
Техника программирования
    #33171126
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музыка Александрне очень понятно, кто будет запускать процесс в случае рестарта сервераTomcat
...
Рейтинг: 0 / 0
Техника программирования
    #33171135
Plut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stdioА я бы через очереди и Message Driven Bean бы извратился ;-)
Дело в том что я мало имел дело с бинами :)
Был некий опыт с Entity и Session Bean
Но с другой стороны это как раз тот случай когда можно
получить новые знания :)
Как это реализовать в общих чертах?
...
Рейтинг: 0 / 0
Техника программирования
    #33171147
Plut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton PlutЗадача такая:
На сервере висит 1 процесс и раз в n сек. смотрит базу данных и прверяет ее
на наличие новых данных на придмет обработки.


Существует-ли возможность обработки факта получения новых
данных вне-базы?

Нет, то что поступили новые данные можно узнать только просмотрев базу данных
...
Рейтинг: 0 / 0
Техника программирования
    #33171163
Plut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А.Грасоff™ Музыка Александрне очень понятно, кто будет запускать процесс в случае рестарта сервераTomcat

На самом деле так и надо бы сделать, только я еще не знаю как это организовать :)
Не в настройках ли сервера это нужно прописывать?
...
Рейтинг: 0 / 0
Техника программирования
    #33171166
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Plut
Нет, то что поступили новые данные можно узнать только просмотрев базу данных

Тогда - присоединяюсь к мнению stdio
...
Рейтинг: 0 / 0
Техника программирования
    #33171167
А.Грасоff™ Музыка Александрне очень понятно, кто будет запускать процесс в случае рестарта сервераTomcat
Да, про load-on-startup = "true" я упустил...
...
Рейтинг: 0 / 0
Техника программирования
    #33171190
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне такая архитектура кажется немного стремной

было бы проще организоваться промежуточное звено (ejb, corba), через которое работали бы все пользователи базы, и в нем складывать информацию об обновлениях куда-нибудь, предоставляя их той программе, которая занимается обновлениями

не совсем понятно, как ты поднимаешь процесс - создаешь новую jvm? или обработчик запроса сервлета находится в бесконечном цикле?

полюбому было бы удобнее воспользоваться javax.ejb.Timer (EJB 2.1)
...
Рейтинг: 0 / 0
Техника программирования
    #33171236
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Plut stdioА я бы через очереди и Message Driven Bean бы извратился ;-)
Дело в том что я мало имел дело с бинами :)
Был некий опыт с Entity и Session Bean
Но с другой стороны это как раз тот случай когда можно
получить новые знания :)
Как это реализовать в общих чертах?Создаём очередь ( если база Oracle, то очередь создаётся в ней). Все данные которые нужно обработать, посылаем в виде сообщений в очередь. Создаём MDB, настраиваем на очередь.
И всё. Это вкратце.
...
Рейтинг: 0 / 0
Техника программирования
    #33171271
Plut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
котымне такая архитектура кажется немного стремной

Да мне тоже это не очень нравиться...

котыне совсем понятно, как ты поднимаешь процесс - создаешь новую jvm? или обработчик запроса сервлета находится в бесконечном цикле?

Точно - цикл.
...
Рейтинг: 0 / 0
Техника программирования
    #33171293
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повторюсь, ejb timer вам поможет. с удаленной инициацией цикла обработки тоже никаких проблем не будет - спокойно запустите в сервлете и все.
...
Рейтинг: 0 / 0
Техника программирования
    #33171306
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
котыповторюсь, ejb timer вам поможет. с удаленной инициацией цикла обработки тоже никаких проблем не будет - спокойно запустите в сервлете и все.а просто Timer?
...
Рейтинг: 0 / 0
Техника программирования
    #33171315
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ котыповторюсь, ejb timer вам поможет. с удаленной инициацией цикла обработки тоже никаких проблем не будет - спокойно запустите в сервлете и все.а просто Timer?

в смысле "а просто"? бесконечный цикл в сервлете у человека уже есть
...
Рейтинг: 0 / 0
Техника программирования
    #33171340
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коты А.Грасоff™ котыповторюсь, ejb timer вам поможет. с удаленной инициацией цикла обработки тоже никаких проблем не будет - спокойно запустите в сервлете и все.а просто Timer?

в смысле "а просто"? бесконечный цикл в сервлете у человека уже есть
смысл в ejb?
...
Рейтинг: 0 / 0
Техника программирования
    #33171385
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ коты А.Грасоff™ котыповторюсь, ejb timer вам поможет. с удаленной инициацией цикла обработки тоже никаких проблем не будет - спокойно запустите в сервлете и все.а просто Timer?

в смысле "а просто"? бесконечный цикл в сервлете у человека уже есть
смысл в ejb?

изначально вопрос был о правильности подхода

использовать висящий сервлет - неправильно
инициировать процесс обновления через http - неправильно

использовать ejb - правильно
инициировать процесс обновления удаленным или местным вызовом - правильно

хотите поспорить? =)
...
Рейтинг: 0 / 0
Техника программирования
    #33171403
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
котыхотите поспорить? =)
а ты не думал о том, что у человека вообще может не быть j2ee-сервера?
...
Рейтинг: 0 / 0
Техника программирования
    #33171412
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ котыхотите поспорить? =)
а ты не думал о том, что у человека вообще может не быть j2ee-сервера?


такие ограничения не были наложены в исходном посте

однако если чел себе может позволить висящий сервлет, то поставить вместо tomcat - jboss не составит труда. =)
...
Рейтинг: 0 / 0
Техника программирования
    #33171424
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
котыоднако если чел себе может позволить висящий сервлет
что такое - висящий сервлет? и чем это плохо?
...
Рейтинг: 0 / 0
Техника программирования
    #33171584
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ котыоднако если чел себе может позволить висящий сервлет
что такое - висящий сервлет? и чем это плохо?

Plut
котыне совсем понятно, как ты поднимаешь процесс - создаешь новую jvm? или обработчик запроса сервлета находится в бесконечном цикле?

Точно - цикл.
...
Рейтинг: 0 / 0
Техника программирования
    #33171591
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
котычто такое - висячий сервлет, и чем это плохо?
...
Рейтинг: 0 / 0
Техника программирования
    #33171615
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ котычто такое - висячий сервлет, и чем это плохо?

тебе нравится задавать однообразные тупые вопросы?

>> что такое - висячий сервлет
см. цитату выше

>> и чем это плохо?
вопрос был по архитектуре приложения
ты себе представляешь, чё такое сервлет-контейнер?
по-твоему, для обработчика http-запроса нормально застревать в бесконечном цикле?

с другой стороны, мне совсем не интересно, что ты думаешь, так что можешь просто не отвечать :)
...
Рейтинг: 0 / 0
Техника программирования
    #33171628
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коты А.Грасоff™ котычто такое - висячий сервлет, и чем это плохо?

тебе нравится задавать однообразные тупые вопросы?

>> что такое - висячий сервлет
см. цитату выше

>> и чем это плохо?
вопрос был по архитектуре приложения
ты себе представляешь, чё такое сервлет-контейнер?
по-твоему, для обработчика http-запроса нормально застревать в бесконечном цикле?

с другой стороны, мне совсем не интересно, что ты думаешь, так что можешь просто не отвечать :)
ну на вопрос ты так и не ответил, что такое висячий сервлет.
знаешь, чем сервлеты отличаются от cgi-скриптов? тем, что сервлет,
однократно создавшись, "висит" в памяти и вызывается по мере надобности.
это упрощенное толкование. и все сервлеты можно смело называть висячими.
эту висячесть обеспечивает контейнер сервлетов, кстати.

в бесконечном цикле "застревает" не обработчик http-запроса, а
экземпляр singleton'a.

//тебе нравится задавать однообразные тупые вопросы?
да.
...
Рейтинг: 0 / 0
Техника программирования
    #33171646
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коты >> что такое - висячий сервлет
см. цитату вышеизвините, я тоже не совсем понимаю, что такое висящий сервлет?
...
Рейтинг: 0 / 0
Техника программирования
    #33171670
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c каких пор сервлеты стали синглтонами?
...
Рейтинг: 0 / 0
Техника программирования
    #33171676
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johanna коты >> что такое - висячий сервлет
см. цитату вышеизвините, я тоже не совсем понимаю, что такое висящий сервлет?

во народ пошел :))

топикстартеру был задан вопрос

-- не совсем понятно, как ты поднимаешь процесс - создаешь новую jvm? или обработчик запроса сервлета находится в бесконечном цикле?

ответ был:

-- Точно - цикл
...
Рейтинг: 0 / 0
Техника программирования
    #33171681
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pitbull terrierc каких пор сервлеты стали синглтонами?а с чего это следует?
...
Рейтинг: 0 / 0
Техника программирования
    #33171687
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коты johanna коты >> что такое - висячий сервлет
см. цитату вышеизвините, я тоже не совсем понимаю, что такое висящий сервлет?

во народ пошел :))

топикстартеру был задан вопрос

-- не совсем понятно, как ты поднимаешь процесс - создаешь новую jvm? или обработчик запроса сервлета находится в бесконечном цикле?

ответ был:

-- Точно - цикл
ответивший "Точно - цикл" понадеялся на твою догадливость и не стал
подробно объяснять, где именно работает этот цикл. Он посчитал, что
ты читаешь не только заглавный пост.
...
Рейтинг: 0 / 0
Техника программирования
    #33171696
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™в бесконечном цикле "застревает" не обработчик http-запроса, а
экземпляр singleton'a.

если можно - подробнее
...
Рейтинг: 0 / 0
Техника программирования
    #33171705
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pitbull terrier А.Грасоff™в бесконечном цикле "застревает" не обработчик http-запроса, а
экземпляр singleton\'a.

если можно - подробнее
/topic/200989&pg=1#1712639

автор топика
...
Создал класс одиночку(Singleton) который и проверяет состояние базы данных.
Создаю его экземпляр в сервлете, сервлет отрабатывает и процесс висит на сервере.
...


Еще подробнее?
...
Рейтинг: 0 / 0
Техника программирования
    #33171716
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может я что-то не так понимаю, но по-моему так как уже реализованно у автора топика- ОК.
у меня, например, так:
Tomcat запускается каждый день в 7 утра. в 7:30 запускается job через Spring и Quartz,
который производит некоторое действия в базе. Принцип работы примерно такой же как и описанный автором топика.
Чем это плохо?
...
Рейтинг: 0 / 0
Техника программирования
    #33171719
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johannaможет я что-то не так понимаю, но по-моему так как уже реализованно у автора топика- ОК.
у меня, например, так:
Tomcat запускается каждый день в 7 утра. в 7:30 запускается job через Spring и Quartz,
который производит некоторое действия в базе. Принцип работы примерно такой же как и описанный автором топика.
Чем это плохо?тем, что не ejb, очевидно.
...
Рейтинг: 0 / 0
Техника программирования
    #33171743
Plut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
коты johanna коты >> что такое - висячий сервлет
см. цитату вышеизвините, я тоже не совсем понимаю, что такое висящий сервлет?

во народ пошел :))

топикстартеру был задан вопрос

-- не совсем понятно, как ты поднимаешь процесс - создаешь новую jvm? или обработчик запроса сервлета находится в бесконечном цикле?

ответ был:

-- Точно - цикл

в бесконечном цикле "застревает" не сервлет, а
экземпляр singleton'a.
Кстати, подумалось, а можно из сервлета сделать singleton?
Чем сервлет отличается от обычного java сласса кроме как extends HttpServlet
...
Рейтинг: 0 / 0
Техника программирования
    #33171760
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johannaможет я что-то не так понимаю, но по-моему так как уже реализованно у автора топика- ОК.
у меня, например, так:
Tomcat запускается каждый день в 7 утра. в 7:30 запускается job через Spring и Quartz,
который производит некоторое действия в базе. Принцип работы примерно такой же как и описанный автором топика.
Чем это плохо?

вы томкету ему полчаса на запуск отвели? разумно :)
...
Рейтинг: 0 / 0
Техника программирования
    #33171855
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага, прочитала еще раз первое сообщение(после обеда мозги не сразу варят) автора топика.
в принципе все верно, только подход не очень верный(на мой взгляд).
Этот ваш класс-singleton должен не из сервлета запускаться,
а через Listener, которого вы прописываете в web.xml и котороый запускает ваш класс-singleton.
Т.е. томcат стартует, и сначала инициализируется ваша application, соответственно инициализируется ваш Listener,
который и запускает ваш класс-singleton в цикле.


in web.xml
Код: plaintext
1.
2.
3.
<listener>
    <listener- class >ру.бла.бла.MyListener</listener- class >
  </listener>
...
Рейтинг: 0 / 0
Техника программирования
    #33171862
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
листенеры в каком томкате появились?
...
Рейтинг: 0 / 0
Техника программирования
    #33171867
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не в tomcate, а в своей web-app
...
Рейтинг: 0 / 0
Техника программирования
    #33171870
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johannaне в tomcate, а в своей web-app
:)

а так: поддержка листенеров в каком томкате появилась?
...
Рейтинг: 0 / 0
Техника программирования
    #33171923
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johannaага, прочитала еще раз первое сообщение(после обеда мозги не сразу варят) автора топика.
в принципе все верно, только подход не очень верный(на мой взгляд).
Этот ваш класс-singleton должен не из сервлета запускаться,
а через Listener, которого вы прописываете в web.xml и котороый запускает ваш класс-singleton.
Т.е. томcат стартует, и сначала инициализируется ваша application, соответственно инициализируется ваш Listener,
который и запускает ваш класс-singleton в цикле.


in web.xml
Код: plaintext
1.
2.
3.
<listener>
    <listener- class >ру.бла.бла.MyListener</listener- class >
  </listener>


а почему бы тогда просто не сделать обычное приложение с Thread.sleep ? =)))) какой смысл?

PS. должен быть ServletContextListener

PS1. в 5.0 точно есть
...
Рейтинг: 0 / 0
Техника программирования
    #33171925
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ johannaне в tomcate, а в своей web-app
:)

а так: поддержка листенеров в каком томкате появилась?

а вообще это часть спецификации Servlet, 2.3 наверняка, но не смарел
...
Рейтинг: 0 / 0
Техника программирования
    #33171930
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коты А.Грасоff™ johannaне в tomcate, а в своей web-app
:)

а так: поддержка листенеров в каком томкате появилась?

а вообще это часть спецификации Servlet, 2.3 наверняка, но не смарел
зачем говорить то, в чем не уверен?
...
Рейтинг: 0 / 0
Техника программирования
    #33171949
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коты а почему бы тогда просто не сделать обычное приложение с Thread.sleep ? =)))) какой смысл?
ничего не говорит против такого решения, если нет web-application.
просто, если уже есть web-application то почему бы и не так
...
Рейтинг: 0 / 0
Техника программирования
    #33171982
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ листенеры в каком томкате появились?
точно не знаю, но в четверке уже было
...
Рейтинг: 0 / 0
Техника программирования
    #33172032
MBasil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Маленькое добавление, если позволите.

Сервлет с точки зрения его работы и есть класс-singleton только управляет им контейнер (если вы не используетс SingleThreadModel - который режим сейчас объявлен устаревшим решением).

Задействовать EJB только для проверки состояния какой-нибудь одной или двух таблиц базы - все равно, что из пушки по воробьям.

И вообще говоря, почему бы ПОТОКУ в бесконечном цикле не засыпать на время, а потом проснувшись выполнять задачу проверки. Для простой проверки это вполне допустимо. Господин Грасофф задавал вовсе не глупые вопросы, а с подвохом (можно ему в очередной раз поаплодировать).

Другой вопрос, как проверять, если изменений много и это Oracle, то и в предлженной автором топика конструкции можно задействовать AQ.
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Техника программирования
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]