为RESTful Web服务生成POJO

时间:2014-01-18 08:41:45

标签: java rest web service

我们在SOAP服务中从WSDL / XSD生成POJO。我们如何在使用RESTful Web服务时生成POJO?

1 个答案:

答案 0 :(得分:1)

由于您没有服务的WSDL或WADL(相对常见的情况),您将不得不这么做。

一种可能的方式如果服务采用XML 是写和XSD描述它采取和返回的文档。如果您以前编写过XSD并且使用了一个旨在帮助这种事情的编辑器(我在Eclipse中使用的那个,但还有很多其他的东西),这并不难。否则,只需自己编写POJO。我建议保持这样的POJO 非常简单,可能根本没有方法,只有公共字段和注释。要注意的主要注释是:

  • @XmlRootElement - 这些名称将构成向任一方向传递的消息外部的元素。去上课。
  • @XmlElement - 标记一个字段,用于映射为消息的子元素。
  • @XmlAttribute - 标记用于映射为属性的字段。
  • @XmlType - 标记一个类适合用作另一条消息的复合元素的类型。

还有更多,但最好的办法是写一些POJO并尝试使用它们:

@XmlRootElement
public class Example {
    @XmlAttribute
    public String pqr;
    @XmlElement
    public String abc;
    @XmlElement
    public List<String> def = new ArrayList<String>();
}
Example example = new Example();
example.abc = "oscar";
example.def.add("bert");
example.def.add("ernie");
// Omitting the attribute; null maps to absence/optionality

JAXBContext c = JAXBContext.newInstance(Example.class);
Marshaller m = c.createMarshaller();
m.marshal(example, System.out);

反方向是解组(当然是JAXB Unmarshaller)并且非常相似。

要使用JSON而不是XML,请使用Jettison库as outlined in this blog post。 (实质上,您只是在JSON和JAXB之间放置一个DOM树的特殊编写器/读者。)