I'm using RC4 for this example. I'm written a very simple example to explain my problem. Can somebody please give a quick look - it must be something simple but I'm having a hard time tracking it down.
The wsdl is attached and validates fine.
The response envelope is:
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header /><soapenv:Body><simpleLoginResponse xmlns="http://simpleNS/types"><soap_session_id>my random string</soap_session_id><web_user_name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" /></simpleLoginResponse></soapenv:Body></soapenv:Envelope>
I'm setting 'web_user_name' in the service, but it's not showing up.
On the client side, simpleLoginResponseDocument.toString() gives me:
<simpleLoginResponse xmlns="http://simpleNS/types">
<soap_session_id>my random string</soap_session_id>
<web_user_name xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</simpleLoginResponse>
I'm getting the 'soap_user_session' in the soap message, but I'm getting null when trying to call simpleLoginResponse.getSoapSessionId() . The reason is here in simplens/types/impl/SimpleLoginResponseDocumentImpl.java -
I've put in a few println() :
public static class SimpleLoginResponseImpl extends org.apache.xmlbeans.impl.values.XmlComplexContentImpl implements simplens.types.SimpleLoginResponseDocument.SimpleLoginResponse
{
public SimpleLoginResponseImpl(org.apache.xmlbeans.SchemaType sType)
{
super(sType);
}
private static final javax.xml.namespace.QName SOAPSESSIONID$0 =
new javax.xml.namespace.QName("", "soap_session_id");
private static final javax.xml.namespace.QName WEBUSERNAME$2 =
new javax.xml.namespace.QName("", "web_user_name");
/**
* Gets the "soap_session_id" element
*/
public java.lang.String getSoapSessionId()
{
synchronized (monitor())
{
check_orphaned();
org.apache.xmlbeans.SimpleValue target = null;
target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(SOAPSESSIONID$0, 0);
if (target == null)
{
System.out.println("target is null");
return null;
}
System.out.println("target is ok? " + target);
return target.getStringValue();
}
}
The target is null, but the value is showing in the soap message.
Any ideas?
Robert
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="SimpleService" targetNamespace="http://simpleNS" xmlns:tns="http://simpleNS" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://simpleNS/types"> <types> <schema targetNamespace="http://simpleNS/types" xmlns:tns="http://simpleNS/types" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <element name="simpleLogin"> <complexType> <sequence> <element name="user_name" type="xsd:string"/> <element name="user_password" type="xsd:string"/> </sequence> </complexType> </element> <element name="simpleLoginResponse"> <complexType> <sequence> <element name="soap_session_id" type="xsd:string"/> <element name="web_user_name" type="xsd:string"/> </sequence> </complexType> </element> </schema></types> <message name="SimpleEndpoint_simpleLogin"> <part name="parameters" element="ns2:simpleLogin"/> </message> <message name="SimpleEndpoint_simpleLoginResponse"> <part name="result" element="ns2:simpleLoginResponse"/> </message> <portType name="SimpleEndpoint"> <operation name="simpleLogin"> <input message="tns:SimpleEndpoint_simpleLogin" name="SimpleEndpoint_simpleLogin"/> <output message="tns:SimpleEndpoint_simpleLoginResponse" name="SimpleEndpoint_simpleLoginResponse"/> </operation> </portType> <binding name="SimpleEndpointBinding" type="tns:SimpleEndpoint"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="simpleLogin"> <soap:operation soapAction="simpleLogin"/> <input name="SimpleEndpoint_simpleLogin"> <soap:body use="literal"/> </input> <output name="SimpleEndpoint_simpleLoginResponse"> <soap:body use="literal"/> </output> </operation> </binding> <service name="SimpleService"> <port name="SimpleEndpointPort" binding="tns:SimpleEndpointBinding"> <soap:address location="http://localhost:8080/axis2/services/SimpleService"/></port></service></definitions>
