Java обратная связь с сервером - PullRequest
1 голос
/ 01 марта 2011

У меня есть две машины.Одна машина является клиентом, а другая - сервером, на котором работает JBoss.У меня нет проблем, когда клиент делает запросы, а сервер отвечает на эти запросы.Однако для нового проекта, который мне нужно сделать, я должен поменяться ролями.Я должен реализовать push-модель, поэтому серверу нужно будет делать запросы от клиента.В частности, мне нужно, чтобы сервер мог запрашивать у клиента файлы в каталоге, копировать файлы с сервера на клиент и запускать программы на клиенте.Я хотел бы сделать это без добавления сервера psedo на клиенте (небольшой процесс демона).

Есть ли хороший способ сделать это?

Спасибо

РЕДАКТИРОВАТЬ: Таким образом, может показаться, что мне нужно настроить сервер на клиентском компьютере, чтобы сделать то, что мне нужно, потому что мне нужно, чтобы сервер отправил клиенту, пока клиент не выполняет процесс Java (но компьютер включен),Имея это в виду, какой сервер Java имеет самый легкий вес?

Ответы [ 5 ]

1 голос
/ 01 марта 2011

запускать программы на клиенте ..... без добавления пседо сервер на клиенте

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

Самым простым решением было бы использовать общие папки для распечатки файлов и копирования файлов и использовать RMI для выполнения удаленных программ. Более сложные варианты включают разработку Distributed Agent с использованием таких инструментов, как JADE , с использованием промежуточного программного обеспечения для обмена сообщениями, скажем, JMS, или с использованием инструментов многоадресной передачи, таких как jGroups .

PS: Разработка собственного агента SNMP и менеджера также могут работать

1 голос
/ 01 марта 2011

Есть ли причина, по которой вы не хотите добавить серверный процесс к клиенту?

Простая реализация (на мой взгляд) состояла бы в том, чтобы встроить HTTP-сервер, такой как Jetty (который имеет относительно небольшую площадь) в вашего клиента.Затем клиент может сообщить JBoss, когда он появится (и где найти Jetty клиента), а затем JBoss может просто использовать HttpClient (или аналогичный) для общения с клиентом.

Если (как подсказывает ваш комментарий) выхотите нажать на машину, пока ваш клиент не работает, тогда почему бы просто не установить демон sshd и использовать scp через JSch ?Вы можете установить Cygwin sshd в Windows.

1 голос
/ 01 марта 2011

Я бы хотел сделать это без добавления сервера psedo на клиенте (небольшой процесс демона). Есть ли хороший способ сделать это?

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

Существуют и другие "push" -техники, которые имитируют push, например, "длинный опрос" и т. Д. В статье Wikipedia по технологии Push-технологии перечислены, например, следующие методы:

  • HTTP-сервер push
  • Pushlet
  • Длинный опрос
  • Реле Flash XMLSocket
0 голосов
/ 01 марта 2011

Вы можете использовать JMS (служба сообщений Java) для отправки уведомлений с сервера своим клиентам. JMS - это специализированный протокол, который позволяет эффективно передавать небольшие сообщения между двумя или более приложениями. Описанный вами сценарий обычно реализуется с помощью JMS.

Например:

  1. Клиент подписывается на тему JMS на сервере JBoss
  2. Сервер отправляет сообщение в тему JMS. Полезная нагрузка сообщения может, например, быть идентификатором команды для списка каталога.
  3. Клиент получает сообщение JMS, выполняет команду и вызывает службу на сервере, чтобы вернуть результат.

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

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

Один из способов имитации проталкивания сервера - Comet .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...