2013-12-23 85 views
3

我正在使用JAX-RS Web服務(澤西島)。我有一個pojo User.java。這個pojo不是從XSD生成的。這pojo是手寫的。 我可以使用REStful web服務方法返回這樣的pojo嗎?另外,使用Restful WEbservices時,是否必須編寫XSD?使用Jersey Restful Web服務返回響應?

@GET 
@Produces ("application/xml") 
public List<User> getUsersAll() { 
    List<User> als=null; 
    try { 
     als= UserService.getInstance().getUserAll(); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return als; 
} 

上面的代碼可能沒有jaxb生成的對象用戶,Java和只有手寫User.java? 另外,總是寫XSD是否是一個好習慣? 謝謝!

回答

1

我可以使用RESTful Web服務方法返回這樣的pojo嗎?

--->是的,你可以。

此外,使用RESTful Web服務時,是否必須編寫XSD?

--->不,它不是必須擁有XSD。

即使您手動編寫Java類,通常也可以生成或編寫XSD

這是因爲使用你的WS的人/客戶將
可能想從你的一些「模型」,基本上
意味着他們想要一個XSD。

澤西島,你可以這樣做:

<servlet> 
    <servlet-name>test-rest-service</servlet-name> 
    <servlet-class> 
     com.sun.jersey.spi.container.servlet.ServletContainer 
    </servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.test.rest.resource</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

Tomcat會掃描這個包,並查找其通過註解映射到URL路徑的資源
那裏。 WADL將在運行時自動生成。但是這個WADL將不會有客戶端可以用來驗證其發送的數據的XSD,其中包括

+0

彼得,感謝您的回覆。如果沒有XSD,那麼WADL是否會生成?謝謝! – user755806

+0

@ user755806取決於您準確使用哪個框架/ Web容器。我做了同樣的事情(手工編寫Java代碼),WADL是在運行時從Java類自動生成的。 –

+0

我正在使用Jersey和Tomcat。 – user755806