Я совершенно новичок в веб-сервисах, JAX-WS и т.д., так что, возможно, вопрос noob...
Итак, я хочу реализовать веб-сервис, чтобы две системы обменивались данными. Система "клиент" интересуется событиями, которые генерируются в системе "сервер". Но "клиентская система" сама по себе является сервером для другого приложения. Сервер - Java (WAR в tomcat). Клиент -.Net.
Должна быть только одна клиентская система, но несколько клиентских процессов внутри клиентской системы, каждая из которых заинтересована в различных категориях событий.
Я буду использовать серверную часть и тестовый клиент. Кто-то другой выполнит код .Net.
Текущая последовательность должна быть вдоль этой строки:
- Сервер работает...
- Клиент инициирует разговор, "регистрирует" на сервере и запрашивает некоторые исходные данные.
- Сервер хранит список конечных точек зарегистрированных клиентов.
- На сервере есть прослушиватель, который уведомляется, когда происходят определенные события. Затем он перейдет через список зарегистрированных клиентов и переадресует событие каждому из них.
- В какой-то момент клиент может "отменить регистрацию" не уведомлять сервер о том, что он больше не хочет получать события.
Во-первых, это звучит как-то разумно выполнимое?
И есть ли стандартный встроенный механизм, используя SOAP (JAX-WS на сервере, что доступно с .Net n клиентом) - что сервер может использовать для получения конечной точки обратного вызова от клиента?
Например, я сделал что-то очень похожее с помощью RMI, в этом случае клиент может просто отправить удаленную ссылку себе, что сервер может просто сохранить ant, ссылаясь позже.
Наконец, существует ли стандартная библиотека для хранения ссылок на конечные точки, создания (коллективных) обратных вызовов и, возможно, обновления списка, удаления клиентов, которые не реагируют на какой-то вызов "ping"?
Примечание для ясности: мне нужно больше, чем просто асинхронный метод с обратным вызовом: одно сообщение от клиента будет генерировать много сообщений обратного вызова от сервера к клиенту.