生成的客户端存根

时间:2015-12-23 15:22:28

标签: java axis2

我正在使用Axis2 v1.6.3来使用https://advertising.criteo.com/API/v201010/AdvertiserService.asmx?WSDL。 对于许多请求,一切正常,但在尝试调用getAccount时,生成的客户端会出现异常。

传播的异常是在调用(在生成的存根中)NullPointerException时导致的_messageContext.getTransportOut()。 但是,进一步挖掘问题似乎是由于IllegalStateException在为信封执行XMLStreamReader.next时引发了toOM

(略微修改的)堆栈跟踪是:

java.lang.IllegalStateException
    at org.apache.xmlbeans.impl.store.Jsr173$XMLStreamReaderForString.next(Jsr173.java:1110)
    at org.apache.xmlbeans.impl.store.Jsr173$SyncedJsr173.next(Jsr173.java:1138)
    at ----.CriteoStub.toOM(CriteoStub.java:2390)
    at ----.CriteoStub.toOM(CriteoStub.java:2379)
    at ----.CriteoStub.toEnvelope(CriteoStub.java:3657)
    at ----.CriteoStub.getAccount(CriteoStub.java:703)

生成的代码是:

private org.apache.axiom.om.OMElement toOM(final com.criteo.advertising.api.v201010.GetAccountDocument param)
throws org.apache.axis2.AxisFault {

    final javax.xml.stream.XMLStreamReader xmlReader = param.newXMLStreamReader();
    while (!xmlReader.isStartElement()) {
        try {
            xmlReader.next();     //<---------- here is the exception risen
        } catch (javax.xml.stream.XMLStreamException e) {
            throw org.apache.axis2.AxisFault.makeFault(e);
        }
    }
 //...

而且,就我而言,参数内容是: <xml-fragment/>

谷歌显示related issues in the past,但没有任何现有的解决方案。

有关如何解决此问题的任何线索?

1 个答案:

答案 0 :(得分:0)

在我的情况下,问题是由于我们使用的版本axis2-wsdl2code-maven-plugin与axis2库不同。

axis2-wsdl2code-maven-plugin版本更改为1.6.3解决了这个问题。