2013-12-20 69 views
2

我想用Restlet開發REST服務。我有一個擴展了org.restlet.Application類的類,還有一個擴展了org.restlet.resource.ServerResource類的類。開發和部署Restlet服務

第一類有一個方法:

public class ServicesApplication extends Application {  
    public Restlet createInboundRoot() { 

     // Create a router Restlet that routes each call to a 

     // new instance of HelloWorldResource. 

     Router router = new Router(getContext()); 

     // Defines only one route 

     router.attach("/myServices", Services.class); 

     return router; 

    } 
} 

而第二類具有服務的不同方法,例如一個HelloWorld:

public class Services extends ServerResource{ 
    @Get ("hello") 
    public void Hello(String name){ 
     System.out.println("Hello "+name); 
    } 
} 

的問題是,我不知道如何在Tomcat中部署我的服務,是否需要生成.war並將其存儲在Tomcat的webapps文件夾中?我不知道是否在實現ServerResource的類中需要調用實現到Application類的類。最後我不知道到底是什麼URL調用「你好」:http://myDomain:myPort/myServices/hello?name=MyName ?????

預先感謝

UPDATE

更新我的應用程序:我改變ServicesApplication,現在它是一個抽象類。我還添加延伸到ServicesApplication類其它類:

public class HelloWorldService extends Services { 

    public String Hello(String name){ 
     System.out.println("Hello "+name); 
     return("Hello"+name); 
    } 
} 

當然,HelloServices類的抽象方法。

而且我在ServicesApplication加入這一行:

router.attach("/helloWorld/{name}", HelloWorldService.class); 

我打電話從我的導航這個方法:

http://localhost:8080/myServices/service/helloWorld/Jesus 

,這是響應:

Hello null 

我該如何調用該方法?我只想做一個Hello +name。當我有這個時,我想開發一些GET和POST方法,以JSON字符串作爲參數。但是,如果用Reslet開發簡單的HelloWorld非常困難,也許我會嘗試使用RestEasy。

:__(

回答

1

出口項目爲.war文件和你的服務器上部署它,然後你的路徑將是http://localhost:port/Project_Name/myServices。如果你想傳遞參數,你必須添加router.attach("/myServices/{name}", Services.class);。你可以寫http://localhost:port/Project_Name/myServices/myName

看看this example

+0

我想要很多方法進入Services類。那麼,我需要在哪裏添加'router.attach(「/ myServices/otherMethod1」)'?在ServicesApplication類中,它是真的嗎?你可以向我解釋一下,如果使用'router.attach(「/ myServices」,Services。類);'我只打電話給'hello'方法? – jjmartinez

+0

感謝您的迴應和示例。我認爲Restlet更容易使用Jersey或RestEasy:( – jjmartinez

+1

去年夏天我和Restlet一起工作過,我唯一記得的就是我恨它!!!:p而且澤西更容易。 [這個鏈接](http://stackoverflow.com/questions/7608694/multiple-get-methods-in-single-resource-class-with-restlet)可以幫到你。 – Sergi

1

本頁面here應該讓你開始,並給你一些想法

+0

Javadoc對我來說並不明確:( – jjmartinez