2

我已经使用ServerServlet机制将我们的Restlet服务部署到了一个 Jetty Java 应用服务器。一些服务是从 GWT 前端调用的,但我还需要直接从我们的服务器逻辑调用它们。

Restlet RIAP 系统似乎很适合这个,但我不知道如何在这里使用它。看来我需要以某种方式暂停 Restlet 组件的上下文。

我发现一篇文章表明RiapServerHelper对此很有用。但我没有找到关于如何使用它的文档。任何例子都会有所帮助。

4

1 回答 1

6

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

希望这能回答你的问题。蒂埃里

于 2011-08-02T08:26:46.397 回答