Hi Vaidya!
Well, the MapSerializer is responsible for writing out the <complexType> declaration, and it expects to be writing the "xml-soap:Map" type, since that's the interoperable name for the Map encoding which a bunch of SOAP toolkits support. This type is automatically mapped in Axis. So if you just remove the <typeMapping> in your WSDD, this should work fine. --Glen > -----Original Message----- > From: Vaidya, Raghavendra (CORP, GEITC) > [mailto:[EMAIL PROTECTED]] > Sent: Friday, March 22, 2002 6:11 AM > To: [EMAIL PROTECTED] > Subject: Using Map Serializer > > > Hi, > When I use a Mp serializer in the wsdd file the wsdl file generated is > wrong.It puts the name of the complex type as "map" and not > as the name of > the parameter "searchParams"(Please refer to the wsdl listing > below). When I > try to generate client code it gives following error : > > java.io.IOException: Type http://soapinterop.org/xsd:searchParams is > referenced > but not defined. > at > org.apache.axis.wsdl.toJava.SymbolTable.checkForUndefined(Unknown > Sou > rce) > at org.apache.axis.wsdl.toJava.SymbolTable.add(Unknown Source) > at org.apache.axis.wsdl.toJava.Emitter.emit(Unknown Source) > at org.apache.axis.wsdl.toJava.Emitter.emit(Unknown Source) > at org.apache.axis.wsdl.WSDL2Java.emit(Unknown Source) > at org.apache.axis.wsdl.WSDL2Java.main(Unknown Source) > > > Is this a bug or am I doing something wrong? > > > Thanks in advance > Vaidya > > > > ///// > wsdd file : > > <deployment xmlns="http://xml.apache.org/axis/wsdd/" > xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> > <service name="urn:eMatrixSearch" provider="java:RPC" > > <parameter name="className" > value="com.crd.rad.searchfwk.ExecuteSearchImpl"/> > <parameter name="methodName" value="performSearch"/> > <typeMapping > xmlns:ns="http://soapinterop.org/xsd" > qname="ns:searchParams" > type="java:java.util.HashMap" > serializer="org.apache.axis.encoding.ser.MapSerializerFactory" > > deserializer="org.apache.axis.encoding.ser.MapDeserializerFactory" > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > /> > </service> > </deployment> > > > ////// > wsdl file generated by Axis: > > > > <?xml version="1.0" encoding="UTF-8" ?> > - <wsdl:definitions > targetNamespace="http://localhost:8080/axis/services/urn:eMatr > ixSearch" > xmlns="http://schemas.xmlsoap.org/wsdl/" > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:impl="http://localhost:8080/axis/services/urn:eMatrixSea > rch-impl" > xmlns:intf="http://localhost:8080/axis/services/urn:eMatrixSearch" > xmlns:tns1="http://soapinterop.org/xsd" > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > - <types> > - <schema targetNamespace="http://xml.apache.org/xml-soap" > xmlns="http://www.w3.org/2001/XMLSchema"> > - <complexType name="Map"> > - <sequence> > - <element maxOccurs="unbounded" minOccurs="0" name="item"> > - <complexType> > - <all> > <element name="key" type="xsd:anyType" /> > <element name="value" type="xsd:anyType" /> > </all> > </complexType> > </element> > </sequence> > </complexType> > </schema> > - <schema targetNamespace="http://soapinterop.org/xsd" > xmlns="http://www.w3.org/2001/XMLSchema"> > <element name="searchParams" nillable="true" > type="tns1:searchParams" /> > </schema> > - <schema > targetNamespace="http://localhost:8080/axis/services/urn:eMatr > ixSearch" > xmlns="http://www.w3.org/2001/XMLSchema"> > - <complexType name="ArrayOf_xsd_string"> > - <complexContent> > - <restriction base="SOAP-ENC:Array"> > <attribute ref="SOAP-ENC:arrayType" > wsdl:arrayType="xsd:string[]" /> > </restriction> > </complexContent> > </complexType> > <element name="ArrayOf_xsd_string" nillable="true" > type="intf:ArrayOf_xsd_string" /> > </schema> > </types> > - <wsdl:message name="performSearchRequest"> > <wsdl:part name="searchParams" type="tns1:searchParams" /> > <wsdl:part name="fileURL" type="xsd:string" /> > <wsdl:part name="userID" type="xsd:string" /> > <wsdl:part name="passWord" type="xsd:string" /> > <wsdl:part name="vault" type="xsd:string" /> > </wsdl:message> > - <wsdl:message name="performSearchResponse"> > <wsdl:part name="return" type="intf:ArrayOf_xsd_string" /> > </wsdl:message> > - <wsdl:portType name="ExecuteSearchImpl"> > - <wsdl:operation name="performSearch" > parameterOrder="searchParams fileURL > userID passWord vault"> > <wsdl:input message="intf:performSearchRequest" /> > <wsdl:output message="intf:performSearchResponse" /> > </wsdl:operation> > </wsdl:portType> > - <wsdl:binding name="urn:eMatrixSearchSoapBinding" > type="intf:ExecuteSearchImpl"> > <wsdlsoap:binding style="rpc" > transport="http://schemas.xmlsoap.org/soap/http" /> > - <wsdl:operation name="performSearch"> > <wsdlsoap:operation soapAction="" /> > - <wsdl:input> > <wsdlsoap:body > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > namespace="http://localhost:8080/axis/services/urn:eMatrixSearch" > use="encoded" /> > </wsdl:input> > - <wsdl:output> > <wsdlsoap:body > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > namespace="http://localhost:8080/axis/services/urn:eMatrixSearch" > use="encoded" /> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > - <wsdl:service name="ExecuteSearchImplService"> > - <wsdl:port binding="intf:urn:eMatrixSearchSoapBinding" > name="urn:eMatrixSearch"> > <wsdlsoap:address > location="http://localhost:8080/axis/services/urn:eMatrixSearch" /> > </wsdl:port> > </wsdl:service> > </wsdl:definitions> > > > "THIS E-MAIL MESSAGE ALONG WITH ANY ATTACHMENTS IS INTENDED > ONLY FOR THE > ADDRESSEE and may contain confidential and privileged information. > If the reader of this message is not the intended recipient, > you are notified that any dissemination, distribution or copy of this > communication is strictly Prohibited. > If you have received this message by error, please notify us > immediately, return the original mail to the sender and delete the > message from your system." >
