Hello all,

 

Does anyone have a real example of a web service that receives and returns an org.w3c.dom.Element? I created one, but doesn’t work! :’-((((((((((((

 

Always I get this error:

 

org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.

 

My web service is just this:

 

import org.w3c.dom.Element;

 

public class ElementWS {

 

     

      public Element method(Element e){

            return e;

      }

}

 

And my wsdd is:

 

<deployment xmlns="http://xml.apache.org/axis/wsdd/"

            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

 

 <service name="ElementWS" provider="java:RPC">

  <parameter name="className" value="ElementWS"/>

  <parameter name="allowedMethods" value="*"/>

 

  <typeMapping

      qname="myNS:Element"

      xmlns:myNS="urn:ElementWS"

      languageSpecificType="java:org.w3c.dom.Element"

      deserializer="org.apache.axis.encoding.ser.ElementDeserializerFactory"

      serializer="org.apache.axis.encoding.ser.ElementSerializerFactory"/>

 

 </service>

 

</deployment>

 

In my client I used registerTypeMapping too. This is a piece of my client:

 

               DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

               DocumentBuilder builder = factory.newDocumentBuilder();

               Document documentXML = builder.parse("People.xml");

               Element e = documentXML.getDocumentElement();

                       

               Object[] params = {e};

              

               Service service = new Service();

              

               QName qnElement = new QName("urn:ElementWS", "Element");

              

               Call call = (Call) service.createCall();

             

               call.registerTypeMapping(Element.class, qnElement ,

                         new org.apache.axis.encoding.ser.ElementSerializerFactory(),

                         new org.apache.axis.encoding.ser.ElementDeserializerFactory());

 

               call.setTargetEndpointAddress( new java.net.URL(urlWS) );

              

               call.setOperationName( new QName(urlWS, "method") );

              

               Element ele = (Element) call.invoke(params);

              

               System.out.println(ele);

 

Does anyone can see why I’m getting this error?

 

Thanks very, very, very, very much!!

 

Fabrício.

Reply via email to