[AXIS2] Gestion des documents XML dans les paramètres de web service
	
	
		Bonjour,
Voici un web service on ne peut plus simple
package c;
import org.w3c.dom.Document;
public class b{
public b(){
}
public Document testB(Document xml){
	return xml;
}
}
Le déploiement de l'aar se passe correctement
je tente d'interroger ce webservice par un navigateur de la façon suivante
http://localhost:8080/axis2/b/testB?xml=...
J'obtiens l'exception suivante:
...
[ERROR] org.w3c.dom.Document
org.apache.axis2.AxisFault: org.w3c.dom.Document
        at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
        at org.apache.axis2.engine.DefaultObjectSupplier.getObject(DefaultObjectSupplier.java:30)
        at org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:410)
        at org.apache.axis2.databinding.utils.BeanUtil.processObject(BeanUtil.java:722)
        at org.apache.axis2.databinding.utils.BeanUtil.ProcessElement(BeanUtil.java:670)...
Caused by: java.lang.InstantiationException: org.w3c.dom.Document
        at java.lang.Class.newInstance0(Class.java:340)
        at java.lang.Class.newInstance(Class.java:308)
...
Le WSDL généré par Axis2: 
  <?xml version="1.0" encoding="UTF-8" ?> 
- <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://c" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ax21="http://dom.w3c.org/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://c">
  <wsdl:documentation>b</wsdl:documentation> 
- <wsdl:types>
- <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://dom.w3c.org/xsd">
- <xs:complexType name="Document">
- <xs:sequence>
  <xs:element minOccurs="0" name="doctype" nillable="true" type="ax21:DocumentType" /> 
  <xs:element minOccurs="0" name="documentElement" nillable="true" type="ax21:Element" /> 
  <xs:element minOccurs="0" name="documentURI" nillable="true" type="xs:string" /> 
  <xs:element minOccurs="0" name="domConfig" nillable="true" type="ax21:DOMConfiguration" /> 
  <xs:element minOccurs="0" name="implementation" nillable="true" type="ax21: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="ax21: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="ax21: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:element minOccurs="0" name="namedItem" nillable="true" type="ax21:Node" /> 
  <xs:element minOccurs="0" name="namedItemNS" nillable="true" type="ax21:Node" /> 
  </xs:sequence>
  </xs:complexType>
- <xs:complexType name="Node">
- <xs:sequence>
  <xs:element minOccurs="0" name="attributes" nillable="true" type="ax21:NamedNodeMap" /> 
  <xs:element minOccurs="0" name="baseURI" nillable="true" type="xs:string" /> 
  <xs:element minOccurs="0" name="childNodes" nillable="true" type="ax21:NodeList" /> 
  <xs:element minOccurs="0" name="firstChild" nillable="true" type="ax21:Node" /> 
  <xs:element minOccurs="0" name="lastChild" nillable="true" type="ax21:Node" /> 
  <xs:element minOccurs="0" name="localName" nillable="true" type="xs:string" /> 
  <xs:element minOccurs="0" name="namespaceURI" nillable="true" type="xs:string" /> 
  <xs:element minOccurs="0" name="nextSibling" nillable="true" type="ax21:Node" /> 
  <xs:element minOccurs="0" name="nodeName" nillable="true" type="xs:string" /> 
  <xs:element minOccurs="0" name="nodeType" type="xs:short" /> 
  <xs:element minOccurs="0" name="nodeValue" nillable="true" type="xs:string" /> 
  <xs:element minOccurs="0" name="ownerDocument" nillable="true" type="ax21:Document" /> 
  <xs:element minOccurs="0" name="parentNode" nillable="true" type="ax21:Node" /> 
  <xs:element minOccurs="0" name="prefix" nillable="true" type="xs:string" /> 
  <xs:element minOccurs="0" name="previousSibling" nillable="true" type="ax21:Node" /> 
  <xs:element minOccurs="0" name="textContent" nillable="true" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
- <xs:complexType name="NodeList">
- <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="attributeNode" nillable="true" type="ax21:Attr" /> 
  <xs:element minOccurs="0" name="attributeNodeNS" nillable="true" type="ax21:Attr" /> 
  <xs:element minOccurs="0" name="schemaTypeInfo" nillable="true" type="ax21:TypeInfo" /> 
  <xs:element minOccurs="0" name="tagName" nillable="true" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
- <xs:complexType name="Attr">
- <xs:sequence>
  <xs:element minOccurs="0" name="id" type="xs:boolean" /> 
  <xs:element minOccurs="0" name="name" nillable="true" type="xs:string" /> 
  <xs:element minOccurs="0" name="ownerElement" nillable="true" type="ax21:Element" /> 
  <xs:element minOccurs="0" name="schemaTypeInfo" nillable="true" type="ax21:TypeInfo" /> 
  <xs:element minOccurs="0" name="specified" type="xs:boolean" /> 
  <xs:element minOccurs="0" name="value" 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="ax21: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>
- <xs:schema xmlns:ax22="http://dom.w3c.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://c">
  <xs:import namespace="http://dom.w3c.org/xsd" /> 
- <xs:element name="testB">
- <xs:complexType>
- <xs:sequence>
  <xs:element minOccurs="0" name="xml" nillable="true" type="ax22:Document" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
- <xs:element name="testBResponse">
- <xs:complexType>
- <xs:sequence>
  <xs:element minOccurs="0" name="return" nillable="true" type="ax22:Document" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:schema>
  </wsdl:types>
- <wsdl:message name="testBRequest">
  <wsdl:part name="parameters" element="ns:testB" /> 
  </wsdl:message>
- <wsdl:message name="testBResponse">
  <wsdl:part name="parameters" element="ns:testBResponse" /> 
  </wsdl:message>
  <wsdl:message name="readRequest" /> 
  <wsdl:message name="readResponse" /> 
- <wsdl:portType name="bPortType">
- <wsdl:operation name="testB">
  <wsdl:input message="ns:testBRequest" wsaw:Action="urn:testB" /> 
  <wsdl:output message="ns:testBResponse" wsaw:Action="urn:testBResponse" /> 
  </wsdl:operation>
- <wsdl:operation name="read">
  <wsdl:input message="ns:readRequest" wsaw:Action="urn:read" /> 
  <wsdl:output message="ns:readResponse" wsaw:Action="urn:readResponse" /> 
  </wsdl:operation>
  </wsdl:portType>
- <wsdl:binding name="bSoap11Binding" type="ns:bPortType">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
- <wsdl:operation name="testB">
  <soap:operation soapAction="urn:testB" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="read">
  <soap:operation soapAction="urn:read" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:binding name="bSoap12Binding" type="ns:bPortType">
  <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
- <wsdl:operation name="testB">
  <soap12:operation soapAction="urn:testB" style="document" /> 
- <wsdl:input>
  <soap12:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap12:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="read">
  <soap12:operation soapAction="urn:read" style="document" /> 
- <wsdl:input>
  <soap12:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap12:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:binding name="bHttpBinding" type="ns:bPortType">
  <http:binding verb="POST" /> 
- <wsdl:operation name="testB">
  <http:operation location="b/testB" /> 
- <wsdl:input>
  <mime:content type="text/xml" part="testB" /> 
  </wsdl:input>
- <wsdl:output>
  <mime:content type="text/xml" part="testB" /> 
  </wsdl:output>
  </wsdl:operation>
+ <wsdl:operation name="read">
  <http:operation location="b/read" /> 
- <wsdl:input>
  <mime:content type="text/xml" part="read" /> 
  </wsdl:input>
- <wsdl:output>
  <mime:content type="text/xml" part="read" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:service name="b">
- <wsdl:port name="bHttpSoap11Endpoint" binding="ns:bSoap11Binding">
  <soap:address location="http://10.3.51.62:8080/wssab/services/b.bHttpSoap11Endpoint/" /> 
  </wsdl:port>
- <wsdl:port name="bHttpSoap12Endpoint" binding="ns:bSoap12Binding">
  <soap12:address location="http://10.3.51.62:8080/wssab/services/b.bHttpSoap12Endpoint/" /> 
  </wsdl:port>
- <wsdl:port name="bHttpEndpoint" binding="ns:bHttpBinding">
  <http:address location="http://10.3.51.62:8080/wssab/services/b.bHttpEndpoint/" /> 
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>
J'ai déjà géré des documents avex Axis1.4 mais je n'ai pas encore réussi à migrer cette gestion sous Axis2.0
Avez vous déjà réussi à gérer des documents XML avec Axis2?
Merci d'avance