Java - Как отправить уведомление с сервера на клиент - PullRequest
0 голосов
/ 20 марта 2011

У меня есть сервер, где мой Java веб-приложение и база данных сервер постоянно.

Теперь клиенты моего веб-приложения двух типов:

  • ClientType1
  • ClientType2

Оба могут получить доступ к базе данных.

ClientType1 сохраняет данные в базе данных.

ClientType2 извлекает данные из базы данных.

Но ClientType1 должен запуститься хранение данных в базе данных когда ClientType2 говорит Начало .

Аналогично ClientType1 должен прекратить хранение данных в базе данных когда ClientType2 говорит Stop

=============================================== ============================

Q1. Каковы решения этой проблемы?

  • Вот подходы, о которых я подумал:

  • Создайте в базе данных таблицу с одним столбцом, в котором отображается состояние Старт или Стоп , и значение этого столбца должно быть установлено ClientType2 . ClientType1 будет продолжать отправлять запрос в базу данных для получения статуса из этой таблицы и выполнять операции в соответствии со статусом.

  • Применить ServerPush подход, при котором сервер будет поддерживать соединение с ClientType1 живым и будет отправлять ему запрос всякий раз, когда он получает команда ( Пуск или Стоп ) из ClientType2 . Проблема с этим подходом заключается в том, что нет. количество открытых розеток у сервера будет увеличиваться по мере увеличения ClientType1

Ответы [ 2 ]

0 голосов
/ 20 марта 2011

Для этого вы должны использовать своего рода Ajax, поскольку это абстрагирует «сервер может вызвать клиента».

Выберите библиотеку, которая позволяет держать одно соединение открытым и выполнять несколько действий через это соединение.

0 голосов
/ 20 марта 2011

Я не считаю межпроцессное взаимодействие через базу данных хорошим подходом.Типичный сценарий состоит в том, что клиент регистрируется на сервере, что дает ему право на получение сообщений с использованием механизма на основе сокетов.

Клиент может затем:

  • Попросить сервер выполнить операцию базы данных от его имени
  • Запросить доступ к базе данных

Если существует так много клиентов, для которых поддержание открытого соединения будет проблемой, вы можете либо инициировать новое соединение каждый раз, когда вам нужно будет связаться с сервером, либо позволить серверу предложить, например, какой-нибудь REST API, который сервер можетопрос.

...