在Java App服务器中部署的Restlet RIAP协议

时间:2011-07-24 22:16:52

标签: java restlet restlet-2.0

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

Restlet RIAP系统似乎是完美的,但我不知道如何在这里使用它。似乎我需要以某种方式阻止Restlet组件的Context。

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

1 个答案:

答案 0 :(得分: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

希望能回答你的问题。 亨利