Debugging showed that we obviously ran into this issue: http://issues.apache.org/jira/browse/AXIS2-4350
Not only the namespaces are different but also the attribute wrapped (is set to false if we use our WSDL which causes the wrong parsing) Did anybody have the same problem and a solution for it? Regards, Nora Am Donnerstag, den 23.07.2009, 21:58 -0400 schrieb Ramya K Grama: > I had this issue a few weeks ago when I was testing my web service > using the Axis2 Java Client API. > And yes it was in the toOM method and had to do with the way parsing > was done. > Running it in Debug mode helped. Finally I ended up using an > alternative way of getting hold of the XMLInputStream. > I dont have the exact API sequence right now. Will try to post it > tomorrow from work. > > > On Thu, Jul 23, 2009 at 11:48 AM, Nora Serinek > <[email protected]> wrote: > > Yes, it seams to be a namespace problem, but I don't get it > together. > > We didn't change a thing in the WSDL, yet it behaves > different. > > Debugging showed the following: > > Case 1 (let Axis generate the WSDL on the fly): > > In RPCMessageReceiver.invokeBusinessLogic you see the > AxisOperation of the OperationContext in the InMessage as > name the value "login" (without any NamespaceURI) > > Later in the code when parsing the SOAP > org.apache.axis2.databinding.utils.BeanUtil.deserialize gets > an OMElement as input parameter response which is the body of > the SOAP- request (without the envelope)usioes well. > > Case 2 (use the same WSDL but declare it explicitly via > useOriginalwsdl="true"): > > In this case you see in > RPCMessageReceiver.invokeBusinessLogic() in the AxisOperation > of the OperationContext in the InMessage that name has the > value "{http://mcs.ws.ibet.com}login" > > Later in the code > org.apache.axis2.databinding.utils.BeanUtil.deserialize gets > the same input as in case 1 but parses it different. The > result of parsing is an array of one empty string "". This is > of course far away from what our login-method expects as > input :( > > Any idea what's going wrong here and where this namespace > suddenly comes from? > > Many thanks! > > Nora > > > > > Am Donnerstag, den 23.07.2009, 06:11 -0600 schrieb Larry > Meadors: > > > > I JUST had this happen to me 2 days ago. > > > > It turned out that in my case, the namespace for the unexpected > > element was the problem. > > > > I ended up running the service in a debugger and IIRC, I found it in > > the fromOM method of the service's MessageReceiverInOut class. It > was > > calling something like this: > > > > parse(param.getXMLStreamReaderWithoutCaching()) > > > > Once I found the mismatched namespaces, I was able to fix my wsdl so > > they matched - unfortunately it was really late at night and I don't > > remember more details than that. Sorry. :( > > > > Larry > > > > > > On Thu, Jul 23, 2009 at 4:44 AM, Nora > Serinek<[email protected]> wrote: > > > Hi, > > > > > > I am getting mad. > > > > > > We have a method like this in our webservice class > MCSLoginService: > > > > > > public class MCSLoginService { > > > public ErrorCode login(String username, String password, > String > > > language) {..} > > > } > > > > > > In the services.xml the service is defined as following: > > > > > > <service name="MCSLoginService" scope="transportsession" > > > useOriginalwsdl="false" targetNamespace="http://mcs.ws.ibet.com"> > > > <description>MCSLoginService</description> > > > <parameter > > > > name="ServiceClass">com.ibet.ws.mcs.server.axis2.MCSLoginService</parameter> > > > <schema namespace="http://mcs.ws.ibet.com"> > > > <mapping namespace="http://server.mcs.ws.ibet.com" > > > package="com.ibet.ws.mcs.server.axis2"/> > > > <mapping namespace="http://share.b2b.ws.ibet.com" > > > package="com.ibet.ws.b2b.share"/> > > > </schema> > > > <messageReceivers> > > > <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" > > > class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> > > > </messageReceivers> > > > </service> > > > > > > If setting the parameter useOriginalwsdl="false" the attached > WSDL is > > > generated. > > > > > > This works fine and results in the following SOAP for the > login-method: > > > > > > <?xml version='1.0' encoding='utf-8'?> > > > <soapenv:Envelope > xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> > > > <soapenv:Body> > > > <ns2:login xmlns:ns2="http://axis2.server.mcs.ws.ibet.com"> > > > <ns2:username>admin</ns2:username> > > > <ns2:password>111</ns2:password> > > > <ns2:language>de</ns2:language> > > > </ns2:login> > > > </soapenv:Body> > > > </soapenv:Envelope> > > > > > > > > > <?xml version='1.0' encoding='utf-8'?> > > > <soapenv:Envelope > xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> > > > <soapenv:Body> > > > <ns:loginResponse > xmlns:ns="http://axis2.server.mcs.ws.ibet.com"> > > > <ns:return > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > > xsi:nil="true" /> > > > </ns:loginResponse> > > > </soapenv:Body> > > > </soapenv:Envelope> > > > > > > Because we are planning to modify the WSDL, we downloaded that > WSDL and > > > switched useOriginalwsdl to "true" and then something is going > completely > > > wrong although we didn't change anything in the WSDL. > > > > > > The login-method obviuosly doesn't get the values for the input > parameters > > > and therefore sends back an error code which in turn cannot be > read by the > > > client we generated from the WSDL. > > > The client shows the following error message: > > > > > > ADBException: Unexpected subelement displayable > > > > > > Good old acquaintance, right? > > > > > > Here is the SOAP that is generated in that case: > > > > > > <?xml version='1.0' encoding='utf-8'?> > > > <soapenv:Envelope > xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> > > > <soapenv:Body> > > > <ns2:login xmlns:ns2="http://axis2.server.mcs.ws.ibet.com"> > > > <ns2:username>admin</ns2:username> > > > <ns2:password>111</ns2:password> > > > <ns2:language>de</ns2:language> > > > </ns2:login> > > > </soapenv:Body> > > > </soapenv:Envelope> > > > > > > > > > <?xml version='1.0' encoding='utf-8'?> > > > <soapenv:Envelope > xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> > > > <soapenv:Body> > > > <ns:loginResponse > xmlns:ns="http://axis2.server.mcs.ws.ibet.com"> > > > <ns:return> > > > <ns:displayable>false</ns:displayable> > > > <ns:errorCode>MCS-6</ns:errorCode> > > > <ns:language>en</ns:language> > > > <ns:message>Language null is not supported</ns:message> > > > </ns:return> > > > </ns:loginResponse> > > > </soapenv:Body> > > > </soapenv:Envelope> > > > > > > We are desperate, all other threads for ADBException: Unexpected > subelement > > > didn't help. > > > > > > Regards, > > > Nora > > > > > > > > > ########################################### > > > This e-mail and any files transmitted with it are confidential and > > > intended solely for the use of the individual or entity to whom > they > > > are addressed. If you have received this e-mail in error please > notify > > > the system manager. > > > > > > > > > > > ########################################### > This e-mail and any files transmitted with it are confidential > and > intended solely for the use of the individual or entity to > whom they > are addressed. If you have received this e-mail in error > please notify > the system manager. > > > ########################################### This e-mail and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this e-mail in error please notify the system manager.
