Справочная информация
Я хорошо разбираюсь в создании центральной системы бронирования для различных поставщиков услуг.Он строится на Java EE 6 на GlassFish 3.1.1 с использованием JSF 2, EJB 3.1 и других стандартов JEE6.У каждого поставщика услуг есть своя собственная служба бронирования встреч, работающая на своем собственном сервере, подключенном к Интернету, но в настоящее время у них нет интерфейса, позволяющего своим пациентам назначать встречи самостоятельно.
Моя система будет работать синхроннозаписывать встречи в системах поставщиков услуг (в ответ на запросы пользователей) через определенный мной API, который включает потоковую передачу XML по HTTP.Эти запросы на бронирование встреч являются синхронными, потому что поставщики услуг будут продолжать записывать встречи непосредственно в своей системе старомодным способом (по телефону / счетчику) и по каким-либо причинам их система оставляет за собой право отклонять такие запросы (для предотвращения двойного бронирования ипо другим причинам).Таким образом, их системы сохраняют статус источника правды.
По очевидным причинам (главным образом, в области безопасности) соединения API устанавливаются системами поставщиков услуг.Это означает, что запросы отправляются сервером (моей системой), а ответы - клиентом (их системой).
Проблема
Мне нужны некоторые предложения относительно того, как я могу создать серверный push-XMLчерез HTTP API с использованием Java EE 6 на GlassFish 3.1.1.На ум приходит множество не идеальных вариантов.Один из них включает в себя одноэлементный компонент, содержащий карту идентификаторов моих встреч с их ответами на бронирование.В этом сценарии моя система опрашивает карту в течение ограниченного времени (например, до 10 секунд), пока не находит соответствующий ответ, а затем возвращает ответ, который затем обрабатывается в пользовательском интерфейсе JSF.Между тем сервлет API (или, возможно, веб-служба JAX-RS) опрашивает одноэлементный компонент для запросов, преобразует их в XML и передает их в выходной поток поставщика услуг.
Я уверен, что должно быть числоиз лучших способов сделать это, не включая потоковое соединение, блокировку, опрос и т. д.
Идеи?
Обновление
Я склонялся к Атмосфере / Джерси, нотеперь я понимаю, что блокировка ввода-вывода вполне масштабируема под NPTL, поэтому я гибок в этом отношении.