Протокол RIAP рестлета, развернутый на сервере приложений Java - PullRequest
2 голосов
/ 25 июля 2011

Я развернул наши службы Restlet на сервере приложений Jetty Java с использованием механизма ServerServlet .Некоторые сервисы вызываются из внешнего интерфейса GWT, но мне также нужно было бы вызывать их напрямую из логики нашего сервера.

Система перезапуска RIAP кажется идеальной для этого, ноЯ не уверен, как использовать это здесь.Кажется, мне нужно как-то ухватиться за контекст Context компонента.

Я нашел один пост, в котором говорилось, что RiapServerHelper будет полезен для этого.Но я не нашел документации о том, как использовать это.Любые примеры будут полезны.

1 Ответ

6 голосов
/ 02 августа 2011

Класс RiapServerHelper является реализацией соединителя сервера. Вы не должны использовать это явно.

Чтобы использовать RIAP, вам необходимо реализовать все сущности вашего приложения как обычно (ресурс сервера, приложение ...). Разница возникает при подключении приложений к компонентам виртуальных хостов. Ресурсы, к которым необходимо получить доступ через RIAP, также необходимо подключить к внутреннему маршрутизатору следующим образом:

Component component = new Component();
component.getServers().add(Protocol.HTTP, 8182);

MyApplication app = new MyApplication();
component.getDefaultHost().attachDefault(app);
component.getInternalRouter().attachDefault(app);

Обратите внимание, что вам не нужно указывать протокол RIAP для компонента. По умолчанию поддерживается.

В этом случае доступ к ресурсам приложения через RIAP прост, поскольку вы можете использовать поддержку клиента Restlet, как и для других протоколов:

Request request = new Request(Method.GET, "riap://component/ping");
Response response = getContext().getClientDispatcher().handle(request);
Representation repr = response.getEntity();

или

ClientResource cr = new ClientResource("riap://component/ping");
Representation repr = cr.get();

Более подробно вы можете посмотреть на странице http://wiki.restlet.org/docs_1.1/13-restlet/27-restlet/48-restlet/86-restlet/45-restlet.html.

Надеюсь, это ответит на ваш вопрос. Thierry

...