Run*_*lse 2 rest jax-rs jaxb marshalling
我习惯于使用生成wsdl文件的jax-ws,然后可以使用maven插件基于此wsdl文件及其xsd生成客户端.使用这个客户端并不麻烦,你不必真正考虑后台发生的事情,如编组,http传输等.
我目前正在使用jaxb来解组一个jax-rs项目来解组对象.其中一种方法返回一个字符串列表,但似乎jaxb不知道如何编组这个,这有点令人惊讶,因为它知道如何编组实体列表(例如,客户).
此外,我自己编写了一个jax-rs服务的客户端,使用jaxb处理http响应和有效负载的解组.使用jaxb进行编组和解组是一件非常麻烦的事情,因为它无法自动编组或解组添加到其上下文中的实体列表,甚至更少的字符串列表.
我想知道是否有一些简洁的方法可以使用restful webservices免费获得所有这些内容?这必须非常轻量级,并且客户端必须易于分发.
谢谢!Runar
使用jaxrs和jaxb无法使用的服务方法:
@GET
@Path("/{customerId}")
@Produces(MediaType.APPLICATION_XML)
public List<String> isCustomerLocked(@PathParam("customerId") Long customerId) {
}
Run Code Online (Sandbox Code Playgroud)
尝试编组/解组文本有效负载的客户端代码.添加到jaxbcontext的类未显示:
javax.xml.bind.Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.marshal(obj, stringwriter)
javax.xml.bind.Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.unmarshal(inputstream)
Run Code Online (Sandbox Code Playgroud)
小智 5
我将使用JAXB来包装数据.简单来说,List<String>这可能看起来有点过头了.但在大多数情况下,您希望取消/编组资源表示,而不是简单的对象.
记住:REST 不是 RPC!
如果你真的想让tom un-/marshall List<String>写一个JAX-RS Provider.但我更喜欢使用JAXB.
S.java
@XmlRootElement
public class S {
private String s;
public S() {
}
public S(String s) {
this.s = s;
}
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}
}
Run Code Online (Sandbox Code Playgroud)
Ss.java
@XmlRootElement(name="ss-wrapper")
public class Ss {
private List<S> ss;
public List<S> getSs() {
return ss;
}
public void setSs(List<S> ss) {
this.ss = ss;
}
public Ss(List<S> ss) {
this.ss = ss;
}
public Ss() {
}
}
Run Code Online (Sandbox Code Playgroud)
JAX-RS类
@Path("/strings")
@GET
@Produces(MediaType.APPLICATION_XML)
public Response getListOfStrings() {
S s1 = new S("foo");
S s2 = new S("bar");
List<S> strings = new ArrayList<S>();
strings.add(s1);
strings.add(s2);
Ss ss = new Ss(strings);
return Response.ok(ss).build();
}
Run Code Online (Sandbox Code Playgroud)
XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ss-wrapper>
<ss>
<s>foo</s>
</ss>
<ss>
<s>bar</s>
</ss>
</ss-wrapper>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2308 次 |
| 最近记录: |