It doesn't help. I played with all possible variants: call.setReturnType(complexTypeQName); call.setReturnType(complexTypeQName, ComplexType.class); call.setReturnClass(ComplexType.class); ... But the result is the same - it doesn't work. It is very simple scenario and I think I don't take into accont some slight detail...
Anne Thomas Manes wrote: > > On the setReturnType method, you want to specify just the XML type. > Don't specify the Java type it maps to: > > call.setReturnType(complexTypeQName); > > Anne > > On Dec 27, 2007 8:23 AM, Sergey Bykov <[EMAIL PROTECTED]> wrote: >> >> <deployment >> xmlns="http://xml.apache.org/axis/wsdd/" >> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> >> >> <!-- Services from IArrayService WSDL service --> >> >> <service name="ArrayService" provider="java:RPC" style="wrapped" >> use="literal"> >> <parameter name="wsdlTargetNamespace" value="http://service"/> >> <parameter name="wsdlServiceElement" value="IArrayService"/> >> <parameter name="schemaQualified" value="http://service"/> >> <parameter name="wsdlServicePort" value="ArrayService"/> >> <parameter name="className" >> value="service.ArrayServiceSoapBindingSkeleton"/> >> <parameter name="wsdlPortType" value="IArray"/> >> <parameter name="typeMappingVersion" value="1.2"/> >> <parameter name="allowedMethods" value="*"/> >> >> <typeMapping >> xmlns:ns="http://service" >> qname="ns:ComplexType" >> type="java:service.ComplexType" >> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" >> >> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" >> encodingStyle="" >> /> >> </service> >> </deployment> >> >> This wsdd was automatically created by axis. I user the following ant >> build >> file: >> <project name="axis" default="all" basedir="."> >> <property name="axis.home" value="C:\Program >> Files\apache-tomcat-5.5.25\webapps\axis"/> >> <property name="array-service-wsdl" value="ArrayService.wsdl"/> >> <path id="axis.classpath"> >> <fileset dir="${axis.home}/WEB-INF/lib"> >> <include name="**/*.jar" /> >> </fileset> >> </path> >> <taskdef resource="axis-tasks.properties" >> classpathref="axis.classpath" /> >> >> <!-- ================================= >> target: all >> ================================= --> >> <target name="all" >> depends="clean,init,java2wsdl,wsdl2java,patch,compile,deploy" >> description="All"> >> </target> >> >> <target name="init" description="Prepare infrastructure for >> building"> >> <mkdir dir="bin" /> >> </target> >> >> <target name="java2wsdl" description="Create WSDL"> >> <javac srcdir="src" destdir="bin" includes="service/IArray.java" >> debug="on" source="1.6" /> >> <axis-java2wsdl >> output="bin\${array-service-wsdl}" >> >> location="http://localhost:8080/axis/services/ArrayService" >> namespace="http://service" >> methods="method" >> style="WRAPPED" >> classname="service.IArray"> >> <classpath> >> <pathelement path="bin"/> >> </classpath> >> </axis-java2wsdl> >> </target> >> >> <target name="wsdl2java" description="Generate source files"> >> <axis-wsdl2java >> verbose="true" >> serverside="true" >> skeletondeploy="true" >> all="true" >> output="bin" >> testcase="false" >> url="bin\${array-service-wsdl}" > >> <mapping >> namespace="http://service" >> package="service" /> >> </axis-wsdl2java> >> </target> >> >> <!-- ================================= >> target: patch >> ================================= --> >> <target name="patch" description="Patching source files"> >> <copy file="src/service/ArrayService.java" >> tofile="bin/service/ArrayServiceSoapBindingImpl.java" overwrite="true" >> verbose="true"/> >> <replace file="bin/service/ArrayServiceSoapBindingImpl.java" >> token="ArrayService" value="ArrayServiceSoapBindingImpl" /> >> <copy todir="bin"> >> <fileset dir="src"> >> <include name="**/*.java" /> >> </fileset> >> </copy> >> </target> >> >> <target name="compile" description="Compile everything"> >> <javac srcdir="bin" destdir="bin" debug="on" source="1.6" >> classpathref="axis.classpath"/> >> </target> >> >> <target name="deploy" depends="undeploy" description="Deploy >> everything"> >> <copy todir="${axis.home}\WEB-INF\classes\service"> >> <fileset dir="bin\service"> >> <include name="**/*.class" /> >> </fileset> >> </copy> >> <axis-admin >> hostname="localhost" >> port="8080" >> servletpath="axis/services/AdminService" >> xmlfile="bin\service\deploy.wsdd"> >> </axis-admin> >> </target> >> >> <target name="undeploy" description="Undeploy everything"> >> <axis-admin >> hostname="localhost" >> port="8080" >> servletpath="axis/services/AdminService" >> xmlfile="bin\service\undeploy.wsdd"> >> </axis-admin> >> <delete dir="${axis.home}\WEB-INF\classes\service"/> >> </target> >> >> <target name="clean" description="Clean everything"> >> <delete dir="bin"/> >> </target> >> </project> >> >> >> Anne Thomas Manes wrote: >> > >> > Please provide your WSDD. >> > >> > Anne >> > >> > On Dec 27, 2007 8:02 AM, Sergey Bykov <[EMAIL PROTECTED]> wrote: >> >> >> >> I built a very simple test service the main goal is to return my >> custom >> >> bean >> >> as a result in wrapped/literal style. >> >> This is service: >> >> IArray.java >> >> >> >> package service; >> >> >> >> public interface IArray { >> >> public ComplexType method(); >> >> } >> >> >> >> ArrayService.java >> >> >> >> package service; >> >> >> >> public class ArrayService implements IArray{ >> >> public ComplexType method(){ >> >> ComplexType complexType = new ComplexType(); >> >> complexType.setProp1("value21"); >> >> complexType.setProp2("value22"); >> >> return complexType; >> >> } >> >> } >> >> >> >> This is complex type definition: >> >> ComplexType.java >> >> >> >> package service; >> >> >> >> public class ComplexType { >> >> private String prop1; >> >> private String prop2; >> >> >> >> public String getProp1() { >> >> return prop1; >> >> } >> >> >> >> public void setProp1(String prop1) { >> >> this.prop1 = prop1; >> >> } >> >> >> >> public String getProp2() { >> >> return prop2; >> >> } >> >> >> >> public void setProp2(String prop2) { >> >> this.prop2 = prop2; >> >> } >> >> } >> >> WSDL on the server: >> >> >> >> <?xml version="1.0" encoding="UTF-8" ?> >> >> - <wsdl:definitions targetNamespace="http://service" >> >> xmlns:apachesoap="http://xml.apache.org/xml-soap" >> >> xmlns:impl="http://service" xmlns:intf="http://service" >> >> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" >> >> xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" >> >> xmlns:xsd="http://www.w3.org/2001/XMLSchema"> >> >> - <!-- >> >> WSDL created by Apache Axis version: 1.4 >> >> Built on Apr 22, 2006 (06:55:48 PDT) >> >> >> >> --> >> >> - <wsdl:types> >> >> - <schema elementFormDefault="qualified" >> targetNamespace="http://service" >> >> xmlns="http://www.w3.org/2001/XMLSchema"> >> >> - <element name="method"> >> >> <complexType /> >> >> </element> >> >> - <element name="methodResponse"> >> >> - <complexType> >> >> - <sequence> >> >> <element name="methodReturn" type="impl:ComplexType" /> >> >> </sequence> >> >> </complexType> >> >> </element> >> >> - <complexType name="ComplexType"> >> >> - <sequence> >> >> <element name="prop1" nillable="true" type="xsd:string" /> >> >> <element name="prop2" nillable="true" type="xsd:string" /> >> >> </sequence> >> >> </complexType> >> >> </schema> >> >> </wsdl:types> >> >> - <wsdl:message name="methodRequest"> >> >> <wsdl:part element="impl:method" name="parameters" /> >> >> </wsdl:message> >> >> - <wsdl:message name="methodResponse"> >> >> <wsdl:part element="impl:methodResponse" name="parameters" /> >> >> </wsdl:message> >> >> - <wsdl:portType name="IArray"> >> >> - <wsdl:operation name="method"> >> >> <wsdl:input message="impl:methodRequest" name="methodRequest" /> >> >> <wsdl:output message="impl:methodResponse" name="methodResponse" /> >> >> </wsdl:operation> >> >> </wsdl:portType> >> >> - <wsdl:binding name="ArrayServiceSoapBinding" type="impl:IArray"> >> >> <wsdlsoap:binding style="document" >> >> transport="http://schemas.xmlsoap.org/soap/http" /> >> >> - <wsdl:operation name="method"> >> >> <wsdlsoap:operation soapAction="" /> >> >> - <wsdl:input name="methodRequest"> >> >> <wsdlsoap:body use="literal" /> >> >> </wsdl:input> >> >> - <wsdl:output name="methodResponse"> >> >> <wsdlsoap:body use="literal" /> >> >> </wsdl:output> >> >> </wsdl:operation> >> >> </wsdl:binding> >> >> - <wsdl:service name="IArrayService"> >> >> - <wsdl:port binding="impl:ArrayServiceSoapBinding" >> name="ArrayService"> >> >> <wsdlsoap:address >> >> location="http://localhost:8080/axis/services/ArrayService" /> >> >> </wsdl:port> >> >> </wsdl:service> >> >> </wsdl:definitions> >> >> And here is client: >> >> Client.java >> >> >> >> package client; >> >> >> >> import org.apache.axis.client.Call; >> >> import org.apache.axis.client.Service; >> >> import org.apache.axis.encoding.ser.ArrayDeserializerFactory; >> >> import org.apache.axis.encoding.ser.ArraySerializerFactory; >> >> import service.ComplexType; >> >> >> >> import javax.xml.namespace.QName; >> >> import java.util.ArrayList; >> >> >> >> public class Client { >> >> >> >> public static void main(String[] args){ >> >> try { >> >> Service service = new Service(); >> >> Call call = (Call) service.createCall(); >> >> >> >> >> call.setTargetEndpointAddress("http://localhost:8080/axis/services/ArrayService"); >> >> call.setOperationName("method"); >> >> QName complexTypeQName = new >> >> QName("http://service","ComplexType"); >> >> call.registerTypeMapping(ComplexType.class, >> >> complexTypeQName, >> >> new >> >> org.apache.axis.encoding.ser.BeanSerializerFactory >> >> (ComplexType.class,complexTypeQName), >> >> new >> >> >> org.apache.axis.encoding.ser.BeanDeserializerFactory(ComplexType.class,complexTypeQName)); >> >> call.setOperationStyle("wrapped"); >> >> call.setOperationUse("literal"); >> >> call.setReturnType(complexTypeQName, ComplexType.class); >> >> ComplexType complexType = (ComplexType) call.invoke(new >> >> Object[0]); >> >> } >> >> catch (Exception e) { >> >> e.printStackTrace(); >> >> } >> >> >> >> } >> >> } >> >> >> >> This service is extreamly simple, but I got the following problem: >> axis >> >> client can't parse result correctly. I get the following SOAP >> response: >> >> <?xml version="1.0" encoding="UTF-8"?> >> >> <soapenv:Envelope >> >> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >> >> xmlns:xsd="http://www.w3.org/2001/XMLSchema" >> >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> >> >> <soapenv:Body> >> >> <methodResponse xmlns=""> >> >> <ns1:methodReturn xmlns:ns1="http://service"> >> >> <ns1:prop1>value21</ns1:prop1> >> >> <ns1:prop2>value22</ns1:prop2> >> >> </ns1:methodReturn> >> >> </methodResponse> >> >> </soapenv:Body> >> >> </soapenv:Envelope> >> >> and during parsing this complex type axis throws exeption: >> >> org.xml.sax.SAXException: Deserializing parameter 'methodReturn': >> could >> >> not >> >> find deserializer for type {http://service}ComplexType >> >> at >> >> org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:277) >> >> at >> >> >> org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035) >> >> at >> >> >> org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165) >> >> at >> >> >> org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141) >> >> at >> >> org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236) >> >> at >> >> org.apache.axis.message.RPCElement.getParams(RPCElement.java:384) >> >> at org.apache.axis.client.Call.invoke(Call.java:2467) >> >> at org.apache.axis.client.Call.invoke(Call.java:2366) >> >> at org.apache.axis.client.Call.invoke(Call.java:1812) >> >> at client.Client.main(Client.java:34) >> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> >> at >> >> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> >> at >> >> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> >> at java.lang.reflect.Method.invoke(Method.java:597) >> >> at >> >> com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) >> >> >> >> What is missed in this simple scenario? (Also, if I change the style >> to >> >> rpc >> >> everything becomes working) >> >> >> >> >> >> -- >> >> View this message in context: >> >> >> http://www.nabble.com/Return-complex-type-in-wrapped-literal-style.-tp14512578p14512578.html >> >> Sent from the Axis - User mailing list archive at Nabble.com. >> >> >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> >> > >> > --------------------------------------------------------------------- >> > To unsubscribe, e-mail: [EMAIL PROTECTED] >> > For additional commands, e-mail: [EMAIL PROTECTED] >> > >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/Return-complex-type-in-wrapped-literal-style.-tp14512578p14513008.html >> >> Sent from the Axis - User mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > -- View this message in context: http://www.nabble.com/Return-complex-type-in-wrapped-literal-style.-tp14512578p14517813.html Sent from the Axis - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
