我正在编写一个 JAX-WS Web 服务,它应该返回属于第 3 方库的自定义对象。
方法示例为:
@WebMethod
public CustomObject create(CustomObject2 object)
我无法修改 CustomObject
,因为它是第 3 方库的一部分。
有没有简单的方法可以更改它以具有 JAX-B 兼容的参数和返回类型?
最佳答案
如果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 很复杂(包含列表、 map 或其他对象),则生成的 xml 可能不会很正统
关于java - JAX-WS如何从第3方库返回自定义类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38429537/