У меня есть сценарий, где моя программа Java должна непрерывно общаться с таблицей базы данных, например, моя программа Java должна получить данные моей таблицы, когда новые строки добавляются к нему во времени выполнения. Должна быть постоянная связь между моей программой и базой данных.
Если таблица имеет 10 строк первоначально, и 2 строки добавляются пользователем, она должна обнаружить это и возвратить строки.
Моя программа не должна использовать Ajax и таймеры.
без Ajax и таймеров, похоже, не справиться с этой задачей.
Я тоже столкнулся с этой проблемой, когда мне нужно передать некоторые данные с сервера на клиент, когда они изменяются.
Для этого вы можете использовать Server push AKA "Comet" программирование.
В коменте
Также для отслеживания изменений в БД можно использовать две вещи,
Quartz Scheduler
)В принципе, клиент не может знать, что происходит на стороне сервера, поэтому вы должны передать некоторые данные или событие, чтобы сообщить клиенту, что, у меня есть новые данные, пожалуйста, вызовите некоторый метод
. Это своего рода уведомление. Поэтому, пожалуйста, проверьте в comet/server push с уведомлением о событии.
надеюсь, это поможет.
спасибо.
Если у вас база данных с низким трафиком, вы можете реализовать поток, который быстро проверяет наличие обновлений в базе данных (опрос).
Если у вас БД с высоким трафиком, я бы не рекомендовал этого, потому что опрос создает много дополнительного трафика.
Если вы используете базу данных Oracle, рассмотрите возможность использования триггеров, которые вызывают java хранимую процедуру, которая уведомляет вашего клиента об изменениях в базе данных (используя JMS, RMI или то, что вы хотите).
Не самая простая задача, на самом деле.
Давайте разделим ее на 2 небольшие проблемы:
1) как включить перезагрузку без таймеров и ajax
2) как реализовать на стороне сервера
Нет способа уведомлять клиентов с сервера. Поэтому для создания толстого клиента нужно использовать flash или silverlight или JavaFX или Applets. Если проблема с Ajax в том, что вы не знаете, как его использовать для решения этой задачи, то вы можете изучить некоторые готовые библиотеки jsp тегов или jsf компонентов с поддержкой ajax.
Если у вас только 1 сервер, то просто добавьте кэш. Если у вас несколько серверов, то рассмотрите возможность использования распределенного кэша.
сервер, уведомляющий клиента, не является хорошей идеей (рассмотрим сценарий с 1000 клиентами). Используете ли вы какой-то уровень сохраняемости или вам нужно придерживаться чистого JDBC?
Если у вас включены двоичные журналы в MYSQL, вы можете видеть все транзакции, которые происходят в базе данных.