2011-03-29 58 views
1

我使用restlet 2.0爲我的項目編寫服務器。我有一個java類啓動服務器(從一個端口和所有這些東西開始)。我被困在一個點,我需要映射我打算提供的不同服務的URI。如果我將uri映射到servlet中,我該如何去做。我需要在web.xml中做什麼更改。我發現這方面的文檔很少。 任何幫助讚賞使用restlet 2.0編碼服務器

回答

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服務器,然後到達。例如,地址http://localhost:8082/path/12如果您實施的Restlet服務器如下:

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

希望它能幫助你。 Thierry