我正在使用 restlet 2.0 为我的一个项目编写服务器。我有一个启动服务器的 java 类(在端口和所有这些东西上启动它)。我被困在需要映射我打算提供的不同服务的uri的点上。如果我要在 servlet 中包含 uri 映射部分,我该怎么做。我需要在 web.xml 中进行哪些更改。我发现这方面的文档很少。任何帮助表示赞赏
问问题
1876 次
1 回答
1
实际上,路由配置必须在您的 Restlet 应用程序类中完成。您需要重写 createInboundRoot 方法以将资源附加到路径,如下所述:
public class MyRestletApplication extends Application {
public Restlet createInboundRoot() {
Router router = new Router(getContext());
router.attach("/path/{id}", MyServerResource.class);
(...)
return router;
}
}
然后可以通过配置的 Restlet 服务器访问配置的资源。例如,如果您按以下方式实现 Restlet 服务器,则地址为http://localhost:8082/path/12 :
public static void main(String[] args) {
try {
Server server = new Server(Protocol.HTTP, 8182);
server.setNext(new MyRestletApplication());
server.start();
(...)
} catch(Exception ex) {}
}
Restlet 还提供了一个带有 org.restlet.ext.servlet 扩展的 servlet 适配器。后者允许使用 ServerServlet servlet 来访问配置的资源。配置此 servlet 时,您需要通过 org.restlet.application 上下文参数指定要使用的应用程序类(应用程序包含资源的路径)。servlet 可以配置为每个 servlet 并映射到 /* 模式,如下所述:
<web-app>
<context-param>
<param-name>org.restlet.application</param-name>
<param-value>org.restlet.example.MyApplication</param-value>
</context-param>
<servlet>
<servlet-name>ServerServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServerServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
在这种情况下,您使用 Restlet 实现的 RESTful 应用程序将通过 servlet 容器进行访问。在这种情况下,您的应用程序需要打包为 Java EE Web 应用程序,并且可以通过以下地址访问:http://localhost:8080/mywebapp/path/12。
希望它会帮助你。蒂埃里
于 2011-04-12T14:06:43.897 回答