使用JAXB绑定考虑以下代码,
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SomeRequest {
@XmlElements(value={@XmlElement(name="objOne", type="ObjectOne.class"),
@XmlElement(name="objTwo", type="ObjectTwo.class")})
private MyObject obj;
}
当我收到与此类似的请求时,
<request>
<objectOne>
<!-- Some Data -->
</objectOne>
<objectTwo>
<!-- Some data -->
</objectTwo>
</request>
这两个值都是未编组和处理的,但只保留了objectTwo的最后一个值。
我希望通过在请求中发送两者时抛出异常来避免这种情况。
此外,我正在寻找一种方法来解决它以编程方式,而不使用wsdl架构验证..
在查看以下问题后,我尝试使用JAXB XmlAdapter,
Confused as how to use JAXB XML Adapter for my requirement但是没有办法比较对象是否已经有值并且抛出肥皂错误。
我也想不出使用Unmarshaller来解决它的方法,来自oracle jaxb docs
如果您可以推荐使用某种拦截器的解决方案或扩展一些JAXB类并验证并抛出异常,那就太棒了。
如果有帮助的话,使用jboss上的apache cxf完成Web服务实现。 CXF拦截器也是一种选择,但只有在没有与JAXB相关的解决方案时才会采用它。