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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JDBC-POSTGRES, События базы... Возможно ли? 
V
    Опции темы
maxlab
Дата 22.5.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2006

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



Здравствуйте!
Вот уперся в задачу примерно такого содержания. Есть производственный процесс использующий скоропортящееся сырье. Сам процесс не детерминирован, т.е не равномерен по времени. Четко спрогнозировать необходимость в сырье не возможно. Количество сырья находится в таблице постгреса. Как просигнализировать клиенту ответственному за пополнение запасов о приближении к критическому минимальному количеству, используя стандартное API? Или стоит смотреть в сторону Интербейса/Файрберда?  
--------------------
Удивительное рядом... но оно запрещено!
PM MAIL   Вверх
Maksym
Дата 22.5.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



где тут java?
PM MAIL   Вверх
tux
Дата 22.5.2007, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



И где здесь PostgreSQL? Что такого он не умеет, чтобы это нельзя было реализовать?
PM MAIL Skype GTalk Jabber YIM   Вверх
maxlab
Дата 22.5.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2006

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



Ок... В firebirde я нарыл способность, решающую мою проблему на все 100%. Это возможность передать клиенту в синхронном/асинхронном режиме событие, которое произошло в базе. Там есть оператор POST_EVENT для этого (стр 710 Руководство разработчика баз данных "FireBird" автора Хелен Борри, 2 издание). Вызывается от из триггера или ХП. Явовский клиент коннектится через JayBird JCA-JDBC драйвер и вешает слушателя через менеджер FBEventManager. Ну и так далее... Но беда в том, что свой проект я начал в Постгресе и слазить с него сейчас уже поздно. Да и членораздельная дока по файрберду недавно появилась... Да и такая задача внезапно как снег на голову... Вот и уперся. У меня есть идея как это реализовать, но сложно получается...
Надо будет рядом с постгресом положить серверный процесс который откроет порт для регистрации заинтересованного клиента, создать системную таблицу куда пишутся нужные мне изменения... серверный процесс непрерывно сканирует эту таблицу и отправляет через другой открытый порт уведомление зарегистрированному клиенту. В свою очередь на клиенте нужно организовать отдельный тред где постоянно прослушивать серверный процесс... и так далее... Вот и я спрашиваю... Возможно ли отловить событие как нибудь проще... Может уже кто то на эти грабли наступал 
--------------------
Удивительное рядом... но оно запрещено!
PM MAIL   Вверх
tux
Дата 22.5.2007, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Действительно какой-то ужос. 

В PostgreSQL можно писать триггеры на Java: http://wiki.tada.se/display/pljava/Home. Никаким серверным процессом сканировать таблицу не надо - триггер можно повесить на любые события в таблице. Поскольку Java, думаю есть возможность поработать с JMS. На очередь JMS вешаем обрабочик, который будет разруливать ситуацию. На первый взгляд выглядит все просто, не знаю как будет в реализации.
PM MAIL Skype GTalk Jabber YIM   Вверх
maxlab
Дата 22.5.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2006

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



Во! Сегодня на ночь почитаем про JMS smile. Спасибо за совет!
--------------------
Удивительное рядом... но оно запрещено!
PM MAIL   Вверх
Се ля ви
Дата 22.5.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



Вообще, это довольно стандартное решение - сканирующий серверный процесс. У нас хоть и Oracle, который имеет свои механизмы сигнализации, но всё равно в ряде случаев используется этот подход, поскольку решено было, что так в некоторых случаях сделать удобнее. Только не непрерывно сканирует, а, скажем, раз в 5-10 минут опрашивает нужную таблицу и если нужные изменения фиксирует, отправляет JMS-сообщение, письмишко админу, какой-то метод где-то вызывает или web-сервис дёргает - на твой выбор...

Это не очень сложно.

P.S. Единственное неудобство - это отладка. В случае чего ждать, когда же он выполнит запрос после того, как ты положил данные в таблицу, несколько утомительно...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
ekr
Дата 22.5.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

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



привет, maxlab.
се ля ви прав - можно опрашивать базу (polling) на предмет изменений.

но есть еще один вариант, которого ты коснулся - callback от субд, т.е. когда база сама дернет твое приложение при изменениях. тут вот какая фича: при соединении с внешней системой с помощью J2CA-адаптера так можно делать (но возможность callback-ов появилась в спецификации J2CA1.5, в версии 1.0 такого не было), а стандарте JDBC2 такой возможности нет.

мораль: если найдешь 1.5-адаптер для нужной тебе субд, можешь юзать callbacks стандартным способом. 

 


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
maxlab
Дата 24.5.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2006

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



Почитал про JMS.... обещания однако впечатляют. Решил в Постгрес pljava пока не вкручивать, буду выкручиваться отдельным серверным процессом рядом с БД, дергающим JMS сервис. Сразу возник вопрос - из каких программных компонентов можно создать минимальную конфигурацию чтобы начать эксперименты с JMS? Что нужно дополнительно прикрутить на сервер где крутится постгрес, и на клиента? JDK 6u1 SE проинсталирована везде. 
На сим этот топик можно прикрыть. Остальные вопросы буду задавать в разделе J2EE  smile 
--------------------
Удивительное рядом... но оно запрещено!
PM MAIL   Вверх
tux
Дата 24.5.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Цитата(maxlab @  24.5.2007,  16:49 Найти цитируемый пост)
Сразу возник вопрос - из каких программных компонентов можно создать минимальную конфигурацию чтобы начать эксперименты с JMS?

Можно взять какую-нибудь standalone реализацию JMS, OpenJMS, например. На клиенте нужны какие-то клиентские библиотеки из него же. 
PM MAIL Skype GTalk Jabber YIM   Вверх
maxlab
Дата 25.5.2007, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2006

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



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

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

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


 




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


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

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