2013-11-20 4 views
1

мне нужно послать асинхронное сообщение клиенту из моего CXF (JAX WS) вебсервис слой ...Асинхронные Reponses из WebService - CXF JAXWS

Как клиент будет иметь возможность принимать его, что необходимо предпринять шаги? У вас есть выбор учебника?

ответ

1

У вас есть два варианта достижения асинхронных вызовов от клиента с помощью CXF.

  • Вы можете опрашивать сервис для ответа
  • Вы можете определить функцию обратного вызова, которая будет выполнена, когда работа сервера осуществляется

Каждое решение имеет плюсы и минусы, поэтому выбор в соответствии с вашими потребностями ,

Опрос дает вам объект Response, и вы можете проверить, завершен ли он на него response.isDone(). (если нет, подождите некоторое время, затем отправьте другой запрос)

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

Со стороны сервера, вы должны взглянуть на WS-Addressing (для определения REPLYTO конечной точки для обратного вызова, если это необходимо) и WS-Policy: http://cxf.apache.org/docs/ws-addressing.html

Заметь, что если вам нужно использовать обратные вызовы (кажется поэтому), вам нужно будет определить клиента CXF на стороне клиента, чтобы включить WS-адресацию (на шине cxf).

+0

Спасибо Zenbeni ... Я пробовал и осуществлял, как вы предлагали. Вы можете обратиться к http://svn.apache.org/viewvc/cxf/trunk/distribution/src/main/release/samples/jaxws_async/ – sskumar86

+0

Позволяет скажем, у нас есть «n» количество похожих клиентов, ожидающих асинхронных уведомлений с сервера (где работает веб-служба). Как знать каждого клиента и уведомлять об этом соответственно? Как это сделать? Еще один вопрос о углу: от сервера, мы было бы неопубликованно предоставлять некоторые уведомления клиенту ... как это возможно в java6? – sskumar86

Смежные вопросы