使用Jersey RESTful Web服务返回响应?

3

我正在使用JAX-RS Web服务(Jersey)。我有一个User.java的POJO类。这个POJO类不是从XSD生成的,而是手写的。请问我可以使用RESTful Web服务方法返回这样的POJO吗?此外,在使用RESTful Web服务时是否必须编写XSD?

@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生成的对象User.java,只使用手写的User.java代码是否可行? 此外,总是编写XSD文件是好的实践吗? 谢谢!

1个回答

1

我可以使用RESTful Web服务方法返回这样的POJO吗?

---> 是的,您可以。

此外,在使用RESTful Web服务时是否必须编写XSD?

---> 不是必须的。

通常最好生成或编写一个XSD,即使您手动编写了Java类。因为使用WS的人/客户可能希望从您那里获得一些“模型”,这基本上意味着他们想要一个XSD。

对于Jersey,您可以执行以下操作:

<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,客户端无法使用它来验证发送的数据。

Peter,感谢您的回复。如果没有XSD,那么WADL会自动生成吗?谢谢! - user755806
@user755806 取决于您使用的框架/ Web 容器。我曾经做过与您相同的事情(手写 Java 代码),并且 WADL 是在运行时自动从 Java 类生成的。 - peter.petrov
我正在使用Jersey和Tomcat。 - user755806
完美。我正在使用相同的。 - peter.petrov
不需要客户端拥有你的类。一切都在HTTP上进行,因此客户端可以进行简单的GET/POST请求。从技术上讲,它也不需要WADL。 - peter.petrov
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接