Как сохранить соединение между веб-сервисами RESTful

#java #web-services #rest

#java #веб-сервисы #rest

Вопрос:

У меня есть два веб-сервиса restful:

  1. getMarketData
  2. stopMarketData

getMarketData извлекает данные из внешней службы. stopMarketData остановит процесс извлечения данных, извлекаемых из внешней службы.

Теперь проблема в том, что при запуске getMarketData он создает соединение с внешней службой и начинает извлекать данные (его непрерывный процесс, поскольку он непрерывно извлекает данные до тех пор, пока мы не вызовем stopMarketData ).

После этого, если я выполняю вызов stopMarketData веб-сервиса, это не останавливает процесс извлечения данных, поскольку соединение находится не в контексте getMarketData , так как я могу сохранить соединение между getMarketData и stopMarketData вызовами в restful webservice.

Ответ №1:

Я не думаю, что вы должны поддерживать состояние в RESTful services. Как бы вы масштабировали это решение для запуска на нескольких машинах или даже нескольких процессах?

Если вы действительно хотите это сделать, вам придется каким-то образом разместить соединение в глобальной области (например, в объекте приложения, если вы используете JSP или ASP), которая доступна из нескольких запросов. Затем stopMarketData вызов может получить соединение из этой глобальной области и закрыть его. Этот подход определенно не очень масштабируемый.

Другим вариантом было бы использовать асинхронную технологию, такую как EJBs, управляемый сообщениями. startMarketData и stopMarketData вызовы будут просто отправлять сообщения этим EJB для запуска и остановки соответственно.

Надеюсь, это поможет. Нейт

Комментарии:

1. Хорошо, возможно ли установить соединение в глобальной области, используя только JAX-RS, поскольку я не использую JSP, я напрямую генерирую URL-адреса