Hi,

      I have a web service class as shown below.

import org.w3c.dom.Document;

public class EchoXml {
    public Document echo(Document xml) {
        return xml;
    }
}

*I will not be able to modify this class by using OMElement instead of
Document. I have to use the class in this format only.*

When the service is deployed, it has generated the WSDL with schema
generated for the Document also.

<xs:schema attributeFormDefault="qualified" elementFormDefault="unqualified"
targetNamespace="http://ws.apache.org/axis2";>
    <xs:import namespace="http://dom.w3c.org/xsd"/>
    <xs:element name="echo">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" name="xml" nillable="true"
type="ax24:Document"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="echoResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" name="return" nillable="true"
type="ax24:Document"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
<xs:schema attributeFormDefault="qualified" elementFormDefault="unqualified"
targetNamespace="http://dom.w3c.org/xsd";>
    <xs:complexType name="Document">
        <xs:sequence>
            <xs:element minOccurs="0" name="doctype" nillable="true"
type="ax23:DocumentType"/>
            <xs:element minOccurs="0" name="documentElement" nillable="true"
type="ax23:Element"/>
            <xs:element minOccurs="0" name="documentURI" nillable="true"
type="xs:string"/>
            <xs:element minOccurs="0" name="domConfig" nillable="true"
type="ax23:DOMConfiguration"/>
            <xs:element minOccurs="0" name="implementation" nillable="true"
type="ax23:DOMImplementation"/>
            <xs:element minOccurs="0" name="inputEncoding" nillable="true"
type="xs:string"/>
            <xs:element minOccurs="0" name="strictErrorChecking"
type="xs:boolean"/>
            <xs:element minOccurs="0" name="xmlEncoding" nillable="true"
type="xs:string"/>
            <xs:element minOccurs="0" name="xmlStandalone"
type="xs:boolean"/>
            <xs:element minOccurs="0" name="xmlVersion" nillable="true"
type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DocumentType">
        <xs:sequence>
            <xs:element minOccurs="0" name="entities" nillable="true"
type="ax23:NamedNodeMap"/>
            <xs:element minOccurs="0" name="internalSubset" nillable="true"
type="xs:string"/>
            <xs:element minOccurs="0" name="name" nillable="true"
type="xs:string"/>
            <xs:element minOccurs="0" name="notations" nillable="true"
type="ax23:NamedNodeMap"/>
            <xs:element minOccurs="0" name="publicId" nillable="true"
type="xs:string"/>
            <xs:element minOccurs="0" name="systemId" nillable="true"
type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="NamedNodeMap">
        <xs:sequence>
            <xs:element minOccurs="0" name="length" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Element">
        <xs:sequence>
            <xs:element minOccurs="0" name="schemaTypeInfo" nillable="true"
type="ax23:TypeInfo"/>
            <xs:element minOccurs="0" name="tagName" nillable="true"
type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="TypeInfo">
        <xs:sequence>
            <xs:element minOccurs="0" name="typeName" nillable="true"
type="xs:string"/>
            <xs:element minOccurs="0" name="typeNamespace" nillable="true"
type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DOMConfiguration">
        <xs:sequence>
            <xs:element minOccurs="0" name="parameterNames" nillable="true"
type="ax23:DOMStringList"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DOMStringList">
        <xs:sequence>
            <xs:element minOccurs="0" name="length" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DOMImplementation">
        <xs:sequence/>
    </xs:complexType>
</xs:schema>
I generated the stub using WSDL2Java utility as shown below

public static void main(String[] args) throws Exception {
        WSDL2Java.main(new String[] { "-uri",
                "http://localhost:8080/axis2/services/EchoXml?wsdl";, "-o",
".",
                "-uw" });

It generated stub. But the stub,echo() method is taking a
org.apache.ws.axis2.EchoXmlStub.Document instance. Actually in the client
side, I have an org.w3c.Document instance.

I tried to generate the org.apache.ws.axis2.EchoXmlStub.Document instance
from org.w3c.Document object.


        org.w3c.dom.Document inputDoc = getDocument();
        OMElement om = XMLUtils.toOM(inputDoc.getDocumentElement());
        System.out.println(om);
        EchoXmlStub stub = new EchoXmlStub();
        Document xml = Document.Factory.parse(om.getXMLStreamReader());
        Document echo = stub.echo(xml);

But it is not working.

I tried the same service in Axis 1. There the WSDL generated is different.
The return type is *apachesoap:Document*. And it is working fine.

<schema elementFormDefault="qualified" targetNamespace="
http://DefaultNamespace";>
    <import namespace="http://xml.apache.org/xml-soap"/>
    <import namespace="http://rpc.xml.coldfusion"/>
    <element name="echoXml">
        <complexType>
            <sequence>
                <element name="argXml" type="apachesoap:Document"/>
            </sequence>
        </complexType>
    </element>
    <element name="echoXmlResponse">
        <complexType>
            <sequence>
                <element name="echoXmlReturn" type="apachesoap:Document"/>
            </sequence>
        </complexType>
    </element>
    <element name="fault" type="tns1:CFCInvocationException"/>
</schema>

Is there anyway, I can use apachesoap:Document instead of axis 2 trying to
figure out the schema by introspecting the Document class?

Any idea how I could use org.w3c.Document object for the service?

Please help..

Thanks in advance.
Paul

Reply via email to