Sha*_* D. 6 java web-services jaxb
我正在实现一个小的RESTful Web服务,并且认为我将返回XML blob来表示资源,这些资源直接映射到我拥有的某些Java类.
我可以为每个类做自定义XML编码器,但我偶然发现了JAXB(我从未使用过),这似乎是一种避免编写繁琐的编码逻辑的简洁方法,如果我添加的话我必须保持同步任何类的新属性.
所以,我的问题是: JAXB对于像这样简单的东西来说太重了吗?是否值得使用将基本结构,bean集合等映射到XML文档?
编辑:我正在使用Jersey来构建服务.
注意: 我是EclipseLink JAXB(MOXy)的负责人,也是JAXB(JSR-222)专家组的成员.
如果您使用JAX-RS实现(Jersey,RESTeasy,Wink等)来创建RESTful服务,那么JAXB是默认的绑定层并无缝集成:
有关示例,请参阅:
JAXB也可以"免费"使用Java 6.如果您可以控制XML格式(而不必采用外部模式),那么使用JAXB只需要几个注释和一些非常简单的编组代码就可以轻松使用.
简单的toXML方法:
JAXBContext ctx = JAXBContext.newInstance(YourClass.class);
Marshaller m = ctx.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter sw = new StringWriter();
m.marshal(waypointServer, sw);
sw.close();
return sw.toString();
Run Code Online (Sandbox Code Playgroud)
XML阅读器:
URL url = new URL(filePath);
JAXBContext ctx = JAXBContext.newInstance(YourClass.class);
Unmarshaller um = ctx.createUnmarshaller();
YourClass yc = (YourClass)um.unmarshal(url.openStream());
Run Code Online (Sandbox Code Playgroud)
简单的豆子:
@XmlRootElement
public class YourClass {
List<Stuff> stuffList;
String id;
int cnt;
// getters, setters
}
Run Code Online (Sandbox Code Playgroud)
显然,它会变得更复杂,但开箱即用它可以非常简单.
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |