JAX-WS 如何 return 自定义来自第 3 方库的 class 对象
JAX-WS how to return custom class object from 3rd party library
我正在编写一个 JAX-WS Web 服务,它应该 return 自定义对象,它是第 3 方库的一部分。
方法示例为:
@WebMethod
public CustomObject create(CustomObject2 object)
我无法修改 CustomObject
,因为它是第 3 方库的一部分。
有什么简单的方法可以将其更改为具有与 JAX-B 兼容的参数和 return 类型?
如果 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 可能不会很正统
我正在编写一个 JAX-WS Web 服务,它应该 return 自定义对象,它是第 3 方库的一部分。
方法示例为:
@WebMethod
public CustomObject create(CustomObject2 object)
我无法修改 CustomObject
,因为它是第 3 方库的一部分。
有什么简单的方法可以将其更改为具有与 JAX-B 兼容的参数和 return 类型?
如果 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 可能不会很正统