#java #web-services #rest
#java #веб-сервисы #rest
Вопрос:
У меня есть два веб-сервиса restful:
getMarketData
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-адреса