Hello all, The summary of this post is "Can Axis2 support MultiRef"
I'm Java desktop guy who is a novice at SOAP / HTTP / multiref / etc. I had never heard of multiref until today. Some months ago a large insurance company gave permission for our app to connect to their system via their SOAP interface. They kindly provided the appropriate WSDL and we set about a few months work implementing the client end of the connection. We've used Axis2, ADB, and JAXB where appropriate. We are one of several ISVs who utilize this connection, and we have ZERO influence over their interface & server. It is a quite big and complex WSDL, and the generated stub is about 13,000 lines long. We could not test until all this work was done, so we have done a LOT of work before we were able to discover this issue. Now we are testing we are finding an error. Please remember I am a novice at anything to do with SOAP / Axis2 / ADB / etc so this may not make sense. We can connect via HTTPS, send a "request", and get a "response", but the response generates an "ADBException: Unexpected subelement". Looking at the wire trace we received from the server we see the soap message ... ---start------------- <soapenv:Envelope> <soapenv:Body> <ns1:getAckResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <getAckReturn href="#id0"/> </ns1:getAckResponse> <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:TransReport"> <errorMessage xsi:type="soapenc:string"/> <transStatus href="#id1"/> <uniqueId xsi:type="soapenc:string"/> </multiRef> <multiRef id="id1" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int">-1</multiRef> </soapenv:Body> </soapenv:Envelope> ---end--------------- I am not familiar with SOAP msg formats, but I do know that the correct value for transStatus in this situation is "-1". I can see that "-1" is at "id1" in the message. So I started searching the net looking for information. I found this message http://www.mail-archive.com/[email protected]/msg26972.html entitled "AXIS2 - ADB and multiref?" that suggests that Axis2 does not support multiref, but Axis1 might. <email-snip> Multiref is not supported in document/literal messages. (The multirefs would not conform to the literal schema unless the schema explicitly defines the use of multirefs.) In order to use multirefs, you must use RPC/encoded. Axis2 does not support RPC/encoded. Try Axis 1.x. </email-snip> Due to my limited knowledge and experience in this area, and my lack of understanding of Axis / Axis2 / SOAP / multiref etc, I simply do not know which way to go. - Can anyone suggest a direction to progress in? - Does the above make sense ? - Is Axis2 incapable of dealing with the SOAP messages from that server ? - Is there any possible workaround in Axis2 ? - Are there other things I should check ? - Should we give up on Axis2 and try Axis1 instead ? - ANY other options / suggestions / advice / workarounds ? I can confirm that the Insurance company will not modify their system at all as they have a working system and several other ISVs that successfully connect, so it us up to us to adapt to their system. I appreciate that this is a big wack of incoherrent information to dump here, but we are really struggling here. Any and all suggestions / feedback / advice will be greatly appreciated. Many Thanks, -Damian --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
