Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> А как бы Вы реализовали данную задачу? Потенциально недост-я удал-я БД 
:(
    Опции темы
VSergeyV
Дата 22.7.2006, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 9.5.2006
Где: Новосибирск

Репутация: нет
Всего: 3



ЗАДАЧА. Необходимо реализовать распределенную программу, предназначенную для внесения изменений в БД/несколько БД, необходимо 
предусмотреть, что БД может быть удаленно недоступна (что реально бывает часто). 
Клиентский уровень необходимо реализовать с помощью Java Web Start, планируется что клиентский уровень общается с БД не на прямую 
а через какой-либо Java-сервер, на котором реализованы очереди и обработчик их - очередь поступивших заданий и очередь ответов клиенту о внесении изменений. На Java-сервере должнен быть некая "демоническая" составляющая, которая будет брать задание из очереди заданий и осуществлять попытку выполнить его, т.е. осуществить запрос к БД, в случае неудачи "демон" должен не убирать задание из очереди заданий, а в случае удачи убирать задание из очереди заданий и добавлять в очередь ответов клиенту необходимый ответ. 

Клиентское приложение общается с Java-сервер допустим через SOAP либо RMI.

Вопрос 1. Как наиболее лучше реализовать очереди и обработчик очередей?
Еще к вопросу 1. Можно использовать очереди JMS и допустим EJB компоненты управляемые сообщениями? Компоненты управляемые 
сообщениями вызывается тогда когда в очереди есть сообщения(объекты), более того насколько я помню, возможен вызов сразу нескольких обработчиков, каждый на одно сообщение, если в очереди более одного сообщения. При вызове обработчика - объекта EJB компонента управляемого сообщениями, происходит также автоматическое удаление объекта сообщения из очереди на которую он был "натравлен" для обработки. Если учеть, что допускается отсутствие соединения с БД, то необходимо будет сделать какую-нибудь задержку в EJB компоненте управляемом сообщениями...
Оправдано ли сделать "тупенький" демон - зацикленный код с задержкой, который смотрит очередь запросов, пытается их выполнить, а 
также управляет очередями сообщений? 
Есть ли более совершенный способы реализации этих демонов, чем зацикленный код?

Вопрос 2. Лучше использовать RMI или SOAP для взаимодействия клиентского приложения и приложения на сервере?

Вопрос 3. А как бы Вы реализовали данную задачу? 
PM MAIL ICQ   Вверх
tux
Дата 22.7.2006, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(VSergeyV @  22.7.2006,  12:35 Найти цитируемый пост)
Вопрос 1. Как наиболее лучше реализовать очереди и обработчик очередей?

Собственно, саму очередь (добавление, удаление и выборку заданий) реализовать несложно. Что касается обработчика заданий... Кроме JMS можно использовать запуск заданий по расписанию, используя, например, Quartz. То есть запускаешь, скажем, каждые 10 минут задание, которое будет получать задания, пытаться выполнять запись в БД, ну и т.д.

Цитата(VSergeyV @  22.7.2006,  12:35 Найти цитируемый пост)
Вопрос 2. Лучше использовать RMI или SOAP для взаимодействия клиентского приложения и приложения на сервере?

Проще будет RMI, но у SOAP меньше проблем с вызовами в глобальных сетях, хотя и с RMI проблема решаема. Посмотри еще на протокол Hessian, он объединяет многие достоинства и того и другого. 
PM MAIL Skype GTalk Jabber YIM   Вверх
VSergeyV
Дата 24.7.2006, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 9.5.2006
Где: Новосибирск

Репутация: нет
Всего: 3



Цитата

Проще будет RMI, но у SOAP меньше проблем с вызовами в глобальных сетях, хотя и с RMI проблема решаема. Посмотри еще на протокол Hessian, он объединяет многие достоинства и того и другого. 

В общем случае, использование EJB компонентов и предусмотренного вызова их методов удаленными клиентами, позволяет вообще не использовать SOAP либо RMI? 
PM MAIL ICQ   Вверх
VSergeyV
Дата 24.7.2006, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 9.5.2006
Где: Новосибирск

Репутация: нет
Всего: 3



Цитата

запуск заданий по расписанию, используя, например, Quartz

А в J2EE 1.5 встроенного "пускателя" нет по расписнию? 
PM MAIL ICQ   Вверх
tux
Дата 24.7.2006, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(VSergeyV @  24.7.2006,  11:39 Найти цитируемый пост)
В общем случае, использование EJB компонентов и предусмотренного вызова их методов удаленными клиентами, позволяет вообще не использовать SOAP либо RMI?  

Позволяют. То есть в явном виде беспокиться о них не придется, но EJB-компоненты сами по себе работают через RMI-IIOP.

Цитата(VSergeyV @  24.7.2006,  12:32 Найти цитируемый пост)
А в J2EE 1.5 встроенного "пускателя" нет по расписнию?  

В J2EE "пускателя" нет, есть в J2SE - класс java.util.Timer, но его возможности более ограничены. 
PM MAIL Skype GTalk Jabber YIM   Вверх
w1nd
Дата 24.7.2006, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 7
Всего: 54



Цитата(tux @ 24.7.2006,  08:08)
В J2EE "пускателя" нет, есть в J2SE - класс java.util.Timer, но его возможности более ограничены.

Таймер есть и в J2EE. 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
tux
Дата 24.7.2006, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(w1nd @  24.7.2006,  15:31 Найти цитируемый пост)
Таймер есть и в J2EE.  

Поподробнее, пожалуйста, не знал.  

Это сообщение отредактировал(а) tux - 24.7.2006, 10:35
PM MAIL Skype GTalk Jabber YIM   Вверх
VSergeyV
Дата 24.7.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 9.5.2006
Где: Новосибирск

Репутация: нет
Всего: 3



Цитата(w1nd @ 24.7.2006,  10:31)
Цитата(tux @ 24.7.2006,  08:08)
В J2EE "пускателя" нет, есть в J2SE - класс java.util.Timer, но его возможности более ограничены.

Таймер есть и в J2EE.

1) Я тоже за подробнеееее...
2) Пачему таймера в J2EE может не быть? Т.е. в чем проблема его отсутствия, в то время как в J2SE есть?

Добавлено @ 10:50 
И еще кто использовал Flux (http://www.fluxcorp.com/) или Quartz (http://www.opensymphony.com/quartz/)?  Принципиально ли они нужны в решении данной задачи?  

Это сообщение отредактировал(а) VSergeyV - 24.7.2006, 14:45
PM MAIL ICQ   Вверх
w1nd
Дата 24.7.2006, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 7
Всего: 54



Таймер появился в EJB 2.1 (J2EE 1.4). Вот, статейку нарыл: Using Timers in J2EE Applications.

Цитата(VSergeyV @ 24.7.2006,  10:40)
Т.е. в чем проблема его отсутствия, в то время как в J2SE есть?

В J2EE вообще (и в EJB в частности) не предусмотрено (и вряд ли будет предусмотрено) способов управления потоками. Для таймера же нужен выделенный поток.

  

Это сообщение отредактировал(а) w1nd - 24.7.2006, 20:24


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.