【发布时间】:2013-01-03 23:46:48
【问题描述】:
我正在使用服务器端的 JAX-WS 完成 Web 服务的工作。在许多域对象中,我使用了@XmlRootElement 来帮助促进使用 JAXB 将 XML 文件解组到服务中。一切顺利,输出是我使用 SoapUI 所期望看到的。
但是,当我使用 wsimport 创建客户端(作为其他开发人员的便利 DAO)时,我开始在客户端集成测试类中遇到 NullPointerExceptions。
对 web 服务的调用正常工作,并且客户端收到了响应,但我的更复杂的对象为空。简单的属性,比如字符串,返回的都是可用的数据,而不是更大的对象。
通过使用简单字符串重新创建服务并迁移到更复杂的对象的迭代,我发现当客户端收到在服务器上用@XmlRootElement 声明的对象时,这些对象是空的。如果服务器对象没有 @XmlRootElement 注释,则客户端会收到所有复杂荣耀中的所有数据。
最初缺少@XmlRootElement 让我很适合解组服务器上的数据,但this answer 帮助了我。
因此,由于@XmlRootElement 注释(在服务器上!),wsimport 客户端在 Web 服务响应的解组时静默失败的现象让我很担心。在这种情况下,我可以控制双方并且可以做点什么。但是,如果我无法控制服务器怎么办?我将如何仅使用 wsimport 生成的代码来解决这个问题?
【问题讨论】:
标签: java jaxb jax-ws xjc wsimport