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

标签 java web-services jaxb jax-ws

我正在编写一个 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/

相关文章:

jaxb - 使用带有 JAXB 注释的 Jackson JSON 库

JAXB 生成的特定类型的类实现了自定义接口(interface)

java - 如何在 Java 中处理不断发展的 XML 模式

java - 无法在 macOS : No toolkit found 上执行 JavaFX 示例

java - Android TabView 错误?

java - 如何使用 Java ONVIF Web 服务从摄像头提取 ONVIF 事件

java - 应该使用什么地址来连接 RestService?

java - 单击按钮更改 ImageView 的颜色?

java - 在 JFrame 上使用 BorderLayout。 (使用容器)

java - 从 JAX-WS 生成的代码访问 Web 服务时如何指定主机和端口?