Можно ли использовать JAX-WS, чтобы сервер мог выполнять вызовы веб-службы на клиенте? - PullRequest
0 голосов
/ 21 апреля 2009

Я играю с P2P .
Я хочу использовать JAX-WS для связи в сети P2P.
Некоторые узлы находятся «за брандмауэром», поэтому они не могут прослушивать порты . (Они действуют как клиенты).
Другие узлы могут прослушивать порты. (Они действуют как серверы (и клиенты)).

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

В "мире без веб-сервисов" я бы открыл сокет, а после сокет открыт, серверы могут общаться с клиентами точно так же клиенты общаются с серверами ( в обоих направлениях одинаково , потому что соединение остается открытым).

Но JAX-WS основан на (без сохранения состояния) HTTP , и не существует такой вещи, как "HTTP соединения".
Итак, серверы не могут сделать клиентский вызов, верно?

Что можно сделать, чтобы преодолеть это?

Ответы [ 2 ]

1 голос
/ 21 апреля 2009

в парадигме веб-сервиса, у вас есть «НАПРАВЛЕНИЕ» для вызова, есть клиент (инициатор запроса) и сервис (запросчик) ... так что если вы сделаете так, чтобы оба объекта (станция1 и станция2) были в одном время ws-client и ws-server, вы можете решить эту проблему.

Еще один вариант для клиентов за брандмауэром - опросить ws-сервер (клиент периодически вызывает ws, чтобы узнать новости)

1 голос
/ 21 апреля 2009

Могу ли я предложить вам взглянуть на JXTA ? Это технология Java для построения одноранговых систем, которая будет обрабатывать одноранговые соединения за брандмауэрами и т. Д.

Очевидно, вы можете иметь для использования JAX-WS, но вам следует взглянуть на JXTA, если вы не знаете об этом. Я подозреваю, что это решит ряд проблем для вас.

...