如何以编程方式避免SOAP Request中的多个XML绑定到XMLElement?

时间:2014-02-26 09:30:09

标签: java xml web-services soap jaxb

使用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相关的解决方案时才会采用它。

0 个答案:

没有答案