This is my attempt to build a service that returns a Map, but follows the WS-I rules
 
When I deploy the service I get the following error (abbreviated):
 
java.lang.NoSuchMethodException: org.apache.axis.encoding.ser.ArraySerializerFactory.create(java.lang.Class, javax.xml.namespace.QName)
 at java.lang.Class.getMethod(Class.java:986)
 at org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory (BaseSerializerFactory.java:254)
 at org.apache.axis.deployment.wsdd.WSDDService.deployTypeMapping(WSDDService.java:542)
 at org.apache.axis.deployment.wsdd.WSDDService.initTMR(WSDDService.java:253)
 at org.apache.axis.deployment.wsdd.WSDDService .<init>(WSDDService.java:233)
 at org.apache.axis.deployment.wsdd.WSDDDeployment.<init>(WSDDDeployment.java:192)
 at org.apache.axis.deployment.wsdd.WSDDDocument.setDocument(WSDDDocument.java:139)
 at org.apache.axis.deployment.wsdd.WSDDDocument.<init>(WSDDDocument.java:65)
 at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:179)
 
I've looked at the source and it's right, ArraySerializerFactory doesn't have a create method, but that's what BaseSerializerFactory is trying to call via reflection.
 
This is using Axis 1.3, running on JBoss 4.0.3 (tomcat 5.5.9). I thought there might be some conflict between the Axis that JBoss ships with and the Axis I deployed in my war file, but JBoss has changed the package names, so this shouldn't be a problem.
 
Does anyone know what's happening here?
 
My WSDL and server-config.wsdd files follow.
 
Thanks in advance
 
John
 
<?xml version="1.0" encoding="UTF-8"?>
<definitions
    name="API.wsdl"
    targetNamespace="http://api.ws.digitalimpact.com "
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/ "
    xmlns:tns="http://api.ws.digitalimpact.com"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema ">
    <documentation>Digital Impact API</documentation>
    <types>
        <xsd:schema
            targetNamespace="http://api.ws.digitalimpact.com "
            xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
            xmlns:xsd=" http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
            <xsd:element name="GetMemberProfile" type="tns:GetMemberProfileType"/>
            <xsd:element name="GetMemberProfileResponse" type="tns:GetMemberProfileResponseType"/>
            <xsd:complexType name="NVPairType">
                <xsd:sequence>
                    <xsd:element name="NVname" type="xsd:string"/>
                    <xsd:element name="NVvalue" type="xsd:string"/>
                </xsd:sequence>
            </xsd:complexType>
           
            <xsd:complexType name="NVPairArrayType">
                <xsd:sequence>
                    <xsd:element name="NVPair" minOccurs="0" maxOccurs="unbounded" type="tns:NVPairType"/>
                </xsd:sequence>
            </xsd:complexType>
           
            <xsd:complexType name="GetMemberProfileType">
                <xsd:sequence>
                    <xsd:element name="emailAddress" type="xsd:string"/>
                    <xsd:element name="vendorId" type="xsd:int"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="GetMemberProfileResponseType">
                <xsd:sequence>
                    <xsd:element name="retValues" type="tns:NVPairArrayType"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:schema>
    </types>
    <message name="GetMemberProfileRequest">
        <part element="tns:GetMemberProfile" name="parameters"/>
    </message>
    <message name="GetMemberProfileResponse">
        <part element="tns:GetMemberProfileResponse" name="response"/>
    </message>
    <portType name="ApiService">
        <operation name="GetMemberProfile">
            <input message="tns:GetMemberProfileRequest"/>
            <output message="tns:GetMemberProfileResponse"/>
        </operation>
    </portType>
    <binding name="ApiBinding" type="tns:ApiService">
        <soap:binding style="document" transport=" http://schemas.xmlsoap.org/soap/http"/>
        <operation name="GetMemberProfile">
            <soap:operation soapAction=""/>
            <input>
                <soap:body namespace=" http://api.ws.digitalimpact.com" use="literal"/>
            </input>
            <output>
                <soap:body namespace=" http://api.ws.digitalimpact.com" use="literal"/>
            </output>
        </operation>
    </binding>
    <service name="ApiEndPoint">
        <port binding="tns:ApiBinding" name="ApiService">    
            <soap:address location="http://localhost"/>
        </port>
    </service>
</definitions>
 
 

<?xml version="1.0" encoding="UTF-8"?>

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

  <!-- Services from ApiEndPoint WSDL service -->

  <service name="ApiService" provider="java:RPC" style="wrapped" use="literal">
      <parameter name="wsdlTargetNamespace" value=" http://api.ws.digitalimpact.com"/>
      <parameter name="wsdlServiceElement" value="ApiEndPoint"/>
      <parameter name="schemaQualified" value=" http://api.ws.digitalimpact.com"/>
      <parameter name="wsdlServicePort" value="ApiService"/>
      <parameter name="className" value="com.digitalimpact.ws.api.ApiBindingSkeleton "/>
      <parameter name="wsdlPortType" value="ApiService"/>
      <parameter name="typeMappingVersion" value="1.2"/>
      <parameter name="allowedMethods" value="*"/>

      <typeMapping
        xmlns:ns="http://api.ws.digitalimpact.com"
        qname="ns:NVPairType"
        type="java:com.digitalimpact.ws.api.NVPairType "
        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
        encodingStyle=""
      />
      <arrayMapping
        xmlns:ns="http://api.ws.digitalimpact.com"
        qname="ns:NVPairArrayType"
        type="java: com.digitalimpact.ws.api.NVPairType[]"
        innerType="cmp-ns:NVPairType" xmlns:cmp-ns="http://api.ws.digitalimpact.com"
        encodingStyle=""
      />
  </service>
</deployment>

Reply via email to