JAX-WS如何从第三方库返回自定义类对象

时间:2016-07-18 06:03:40

标签: java web-services jaxb jax-ws

我正在编写一个JAX-WS Web服务,它应该返回作为第三方库的一方的自定义对象。

方法的例子是:

@WebMethod
public CustomObject create(CustomObject2 object)

我无法修改CustomObject,因为它是第三方库的一部分。 有没有简单的方法如何更改它以具有JAX-B兼容参数和返回类型?

1 个答案:

答案 0 :(得分:0)

如果CustomObject是POJO,则可以使用继承来添加JAXB注释,并使用apache commons BeanUtils.copyProperties将属性克隆到JAXB对象

<强> CustomObjectJAXB

@XmlRootElement(name = "CustomObject")
public class CustomObjectJAXB extends CustomObject{

<强>的WebMethod

@WebMethod
public CustomObject create(CustomObject2 object)
   CustomObject co = ... // Get CustomObject from third party library

   CustomObjectJAXB coJaxb = new CustomObjectJAXB()
   BeanUtils.copyProperties (coJaxb,co);
   return coJaxb;
}

这个解决方案简单而且可能适用于普通对象,但如果CustomObject很复杂(包含列表,地图或其他对象),那么结果xml可能不会非常正统