Reasons For Unexpected Subelement Exception In Axis2 Data Binding(ADB)

WSDL2Java which comes with Apache Axis2 is tool that most of us use to generate web service clients and services giving WSDL as an input. If you have ever used WSDL2Java in your own projects you must came across this kind of exception at least once. Until you come up with a perfect WSDL and service implementation, you’ll have to fix this kind of errors.

Solving these type of issues is a pain, because it’s related to code generation and there may be hundreds of generated Java classes. I have came across this error several times due to issues of XML schemas and service implementation errors(implementation is not compliance with the XML schema). So here are some reasons for unexpected subelement exceptions. This will help you to minimize your debug time.

1. You have XML schema ‘any’ in between sequence like following.When the code is generated using WSDL2Java ProcessInfoType’s inner Factory class’s parse method will generate code that process XML schema ‘any’ after the ‘version’ element. When parse method ‘any’ processing is over the XML reader is at the end of the sequence, so instead of ‘status’ element it’ll find ‘ProcessInfo’ element. So it’s better to double check whther you have XML schema ‘any’ element in between elements of a sequence. The correct way is to put ‘any’ at the last.





If you encounter above kind of situations while developing components for WSO2 Carbon platform, the best way to monitor the SOAP messages is using SOAP Tracer comes with most of the Carbon based products. This will help you to compare what implementation returns and what XML schema defines. If you are using Axis2 you can use TCP Monitor to monitor your SOAP communication between client and server.

猜你喜欢

转载自willyiwei.iteye.com/blog/741053