[ http://issues.apache.org/jira/browse/AXIS2-747?page=comments#action_12422355 ] Ajith Harshana Ranabahu commented on AXIS2-747: -----------------------------------------------
What all this tells me is that this could be a possible bug in Axiom. The reason why it suceeds after an env.toString() or during a debug session is that the OM structure gets built completely and a different serializer machanism is used when the structure is built > Missing namespace on subelement > -------------------------------- > > Key: AXIS2-747 > URL: http://issues.apache.org/jira/browse/AXIS2-747 > Project: Apache Axis 2.0 (Axis2) > Issue Type: Bug > Components: om > Affects Versions: 1.0 > Environment: Windows 2K3, JDK 1.5, AXIS2 1.0 and Eclipse 3.1 with > tomcat plugin > Reporter: Qi An > Assigned To: Ajith Harshana Ranabahu > Priority: Critical > > The below all worked fine on 0.95: > The complex type in question is defined in the wsdl as: > <s:complexType name="Credential"> > <s:sequence/> > </s:complexType> > <s:complexType name="EnterpriseCredential"> <s:complexContent> > <s:extension base="s0:Credential"> > <s:sequence/> > <s:attribute name="Login" type="s:string" use="required"/> > <s:attribute name="Password" type="s:string" use="optional"/> > <s:attribute name="Locale" type="s:string" use="optional"/> > <s:attribute name="TimeZone" type="s:string" use="optional"/> > <s:attribute name="Domain" type="s:string" use="optional"/> > <s:attribute name="AuthType" type="s:string" use="optional"/> > </s:extension> > </s:complexContent> > </s:complexType> > In the provider's skeleton, we have the following: > public com.businessobjects.dsws.session.LoginResponseDocument login( > com.businessobjects.dsws.session.LoginDocument param12) > throws > com.businessobjects.dsws.session.SessionSkeleton.DSWSExceptionException, > RemoteException { > Login obj = param12.getLogin(); > Credential cred = obj.getCredential(); > The problem is, on the getCredential() call, we actually get back an > object of type Credential (base class) when the method was invoked with > an enterprise credential. So that further on, on the line: > EnterpriseCredential enterpriseCredential = (EnterpriseCredential) cred; > We get a class cast exception. > Tracing through a bit with the SOAPMonitor, we noticed that the xml > envelope actually ends up looking like: > <?xml version='1.0' encoding='utf-8'?> > <soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <soapenv:Header /> > <soapenv:Body> > <login xmlns="session.dsws.businessobjects.com"> > <credential xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > Password="" Domain="vanyma01" xsi:type="ses:EnterpriseCredential" > Login="administrator" /> > </login> > </soapenv:Body> > </soapenv:Envelope> > Where the namespace definition of "ses" is clearly missing. If you > trace through the deserialization code a bit, this is why the object > comes back as the base class instead of the extended type. > Once thing interesting one of our developer's noticed, is that if, on > the consumer side, you add the lines: > XmlOptions op1 = new XmlOptions(); > op1.setSaveNamespacesFirst(); > m_credential = > EnterpriseCredential.Factory.newInstance(op1); > At the time you create the credential, it seems that *some of the time* > this fixes the problem, so that the xml appears as: > <?xml version='1.0' encoding='utf-8'?> > <soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <soapenv:Header /> > <soapenv:Body> > <login xmlns="session.dsws.businessobjects.com"> > <credential xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:ses="session.dsws.businessobjects.com" Password="" > Domain="vanyma01" xsi:type="ses:EnterpriseCredential" > Login="administrator" /> > </login> > </soapenv:Body> > </soapenv:Envelope> > But only some of the time. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]