1

我正在使用 restlet 2.0 为我的一个项目编写服务器。我有一个启动服务器的 java 类(在端口和所有这些东西上启动它)。我被困在需要映射我打算提供的不同服务的uri的点上。如果我要在 servlet 中包含 uri 映射部分,我该怎么做。我需要在 web.xml 中进行哪些更改。我发现这方面的文档很少。任何帮助表示赞赏

4

1 回答 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 回答