Java Apache CXF 2.4.6到2.5.3的升级
我尝试将以下代码从Apache CXF 2.4.6更新为Apache CXF 2.5.3:Java Apache CXF 2.4.6到2.5.3的升级,java,json,jackson,jax-rs,cxf,Java,Json,Jackson,Jax Rs,Cxf,我尝试将以下代码从Apache CXF 2.4.6更新为Apache CXF 2.5.3: @Path("/myresource") public class MyResource { @GET @Produces(MediaType.APPLICATION_JSON) public Root get() { Root root = new Root(); root.setName("Test"); return roo
@Path("/myresource")
public class MyResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Root get() {
Root root = new Root();
root.setName("Test");
return root;
};
}
@XmlRootElement(namespace = "http://www.my.org", name = "root")
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {
@XmlElement
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
弹簧配置:
<jaxrs:server address="/myPath" id="myID"
<jaxrs:serviceBeans>
<ref bean="myResource" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean class="org.apache.cxf.jaxrs.provider.JAXBElementProvider"/>
<bean class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider" />
</jaxrs:providers>
</jaxrs:server>
使用Apache CXF 2.5.3和Jackson 2.2.3,我得到了一个错误的JSON:
{"ns1.root":{"name":"Test"}}
客户:
JAXRSClientFactoryBean jaxrsClientFactoryBean = new JAXRSClientFactoryBean();
jaxrsClientFactoryBean.setAddress(address);
jaxrsClientFactoryBean.setProviders(Arrays.asList(new JacksonJaxbJsonProvider(), new JAXBElementProvider()));
jaxrsClientFactoryBean.setServiceClass(MyResource.class);
MyResource myResource = jaxrsClientFactoryBean.create(MyResource.class);
Root root = myResource.get();
在客户端(代理客户端)上,我得到一个异常:
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"ns1.root"). Expected elements are <{http://www.my.org}root>
javax.xml.bind.UnmarshaleException:意外元素(uri:,local:“ns1.root”)。预期的要素是
我读了这本书,但没有找到我问题的答案 因为您将根元素定义为“root”,所以这个节点应该显示在序列化的json中 您可以通过设置json提供程序的属性dropRootName来删除这个根元素,如下所述
不确定您的设置是什么样的,但可能是您正在寻找的?
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"ns1.root"). Expected elements are <{http://www.my.org}root>