You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Fabrício <fa...@de9.ime.eb.br> on 2005/09/27 00:13:46 UTC

Web service receiving and returning org.w3c.dom.Element

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.