我正在编写一个JAX-WS Web服务,它应该返回作为第三方库的一方的自定义对象。
方法的例子是:
@WebMethod
public CustomObject create(CustomObject2 object)
我无法修改CustomObject
,因为它是第三方库的一部分。
有没有简单的方法如何更改它以具有JAX-B兼容参数和返回类型?
答案 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可能不会非常正统