You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Deepal jayasinghe <de...@gmail.com> on 2007/09/06 09:13:18 UTC

Re: **JUNK** Re : Re : Re : Tr : Axis problem returning byteArray

If you switch to Axis2 , then you will have what you are expecting,

Thanks
Deepal
> Hello,
>
> Here is the wsdl gnerated when I use the ?wsdl. The return object is
> GMDSRESPCT, adn the tag containing the byteArray is CONTENT. You will
> notice that CONTENT is defined as xsd:string type. This is weird
> because I generated the class using WSDL2java and when I first created
> the wsdl file I specified content as xsd:base64Binary. I really don't
> understand.
>
> The wsdl :
>
>
> <wsdl:types>
>    
>        
>         <complexType name="GMDSREQCT">
>             <sequence>
>                 <element name="TYPE_ID" type="xsd:string" />
>                 <element name="DOC_ID" type="xsd:string" />
>             </sequence>
>         </complexType>
>         <element name="GMDSREQCT" type="tns1:GMDSREQCT" />
>         <complexType name="GMDSRESPCT">
>             <sequence>
>                 <element maxOccurs="1" minOccurs="0" name="CONTENT"
> type="xsd:string" />
>             </sequence>
>         </complexType>
>         <element name="GMDSRESPCT" type="tns1:GMDSRESPCT" />
>     </schema>
>    
>        
>         <complexType name="GMDSERRCT">
>             <sequence>
>                 <element name="GMDSERRCT" type="xsd:string" />
>             </sequence>
>         </complexType>
>     </schema>
>    
>        
>        
>         <element name="fault" type="tns2:GMDSERRCT" />
>     </schema>
> </wsdl:types>
> <wsdl:message name="getDocumentRequest">
>     <wsdl:part element="tns1:GMDSREQCT" name="GMDSREQCT" />
> </wsdl:message>
> <wsdl:message name="GMDSERRCT">
>     <wsdl:part element="impl:fault" name="fault" />
> </wsdl:message>
> <wsdl:message name="getDocumentResponse">
>     <wsdl:part element="tns1:GMDSRESPCT" name="GMDSRESPCT" />
> </wsdl:message>
> <wsdl:portType name="DocContentPortType">
>     <wsdl:operation name="getDocument" parameterOrder="GMDSREQCT">
>         <wsdl:input message="impl:getDocumentRequest"
> name="getDocumentRequest" />
>         <wsdl:output message="impl:getDocumentResponse"
> name="getDocumentResponse" />
>         <wsdl:fault message="impl:GMDSERRCT" name="GMDSERRCT" />
>     </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="DocContentSOAPPortSoapBinding"
> type="impl:DocContentPortType">
>    
>     <wsdl:operation name="getDocument"><wsdlsoap:operation
> soapAction="getDocument" />
>     <wsdl:input name="getDocumentRequest">
>         <wsdlsoap:body use="literal" />
>     </wsdl:input>
>     <wsdl:output name="getDocumentResponse">
>         <wsdlsoap:body use="literal" />
>     </wsdl:output>
>     <wsdl:fault name="GMDSERRCT">
>         <wsdlsoap:fault name="GMDSERRCT" use="literal" />
>     </wsdl:fault>
> </wsdl:operation></wsdl:binding><wsdl:service name="DocContentService">
> <wsdl:port binding="impl:DocContentSOAPPortSoapBinding"
> name="DocContentSOAPPort">
>    
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
>
> ----- Message d'origine ----
> De : WJ Krpelan <kr...@yahoo.com>
> À : axis-dev@ws.apache.org
> Envoyé le : Mardi, 4 Septembre 2007, 20h05mn 22s
> Objet : Re: Re : Re : Tr : Axis problem returning byteArray
>
> Hello,
> As it works with me, I'd suspect there is something
> wrong with your xsd-File or your WSDL-File
> Can I have a look at the WSDL?
> Cheers
>
> --- Thomas Beaujard <th...@yahoo.fr> wrote:
>
> > Hi
> >
> > Here is the SOAP-trace:
> >
> > HTTP/1.1 200 OK Content-Type: text/xml;charset=utf-8
> > Date: Tue, 04 Sep 2007 11:10:43 GMT Server:
> > Apache-Coyote/1.1 Connection: close  
> >
> > <soapenv:Body>
> > <GMDSRESPCT xmlns="hhhhhhhhhhhhhhhh">
> > <CONTENT xsi:type="xsd:byte" xmlns="">37</CONTENT>
> > <CONTENT xsi:type="xsd:byte" xmlns="">80</CONTENT>
> > <CONTENT xsi:type="xsd:byte" xmlns="">68</CONTENT>
> > <CONTENT xsi:type="xsd:byte" xmlns="">70</CONTENT>
> > <CONTENT xsi:type="xsd:byte" xmlns="">45</CONTENT>
> > <CONTENT xsi:type="xsd:byte" xmlns="">49</CONTENT
> > ..........
> > <CONTENT xsi:type="xsd:byte" xmlns="">13</CONTENT>
> > </GMDSRESPCT></soapenv:Body></soapenv:Envelope>
> >
> >
> > As you can see the tag CONTENT appears many times
> > with a type byte, whereas it should only appear once
> > with the type base64binary.
> > I cannot use the xs:string workaround... do you have
> > any other idea?
> >
> > Thanks for your help
> >
> > Thom
> >
> > ----- Message d'origine ----
> > De : WJ Krpelan <kr...@yahoo.com>
> > À : axis-dev@ws.apache.org
> > Envoyé le : Vendredi, 31 Août 2007, 12h24mn 28s
> > Objet : Re: Re : Tr : Axis problem returning
> > byteArray
> >
> > Hi
> > Could you provice a SOAP-Trace (TCPMon)? Would it
> > look
> > similar to the one below?
> > A less than satisfactory workaround, if you control
> > both sides of the wire, would be to change type to
> > xs:string and do the conversion within java.
> > Cheers
> >
> > POST /axis/CalcArr.jws HTTP/1.0
> > Content-Type: text/xml; charset=utf-8
> > Accept: application/soap+xml, application/dime,
> > multipart/related, text/*
> > User-Agent: Axis/1.4
> > Host: 127.0.0.1:8088
> > Cache-Control: no-cache
> > Pragma: no-cache
> > SOAPAction: ""
> > Content-Length: 334
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> >    <soapenv:Envelope
> >
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> <http://schemas.xmlsoap.org/soap/envelope/%22>;;
> > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> <http://www.w3.org/2001/XMLSchema%22>;;
> >
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> <http://www.w3.org/2001/XMLSchema-instance%22>;;>
> >       <soapenv:Body>
> >          <Add xmlns="http://tempuri.org/" <http://tempuri.org/%22>;;>
> >             <i1>ITAMWA==</i1>
> >             <i2>FxdiAg==</i2>
> >          </Add>
> >       </soapenv:Body>
> >    </soapenv:Envelope>
> >
> >
> > HTTP/1.1 200 OK
> > Server: Apache-Coyote/1.1
> > Set-Cookie:
> > JSESSIONID=887A1E5E02B52B88387CAD9B3FEA7F6C;
> > Path=/axis
> > Content-Type: text/xml;charset=utf-8
> > Date: Fri, 31 Aug 2007 10:16:54 GMT
> > Connection: close
> >
> > <?xml version="1.0" encoding="utf-8"?>
> >    <soapenv:Envelope
> >
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> <http://schemas.xmlsoap.org/soap/envelope/%22>;;
> > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> <http://www.w3.org/2001/XMLSchema%22>;;
> >
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> <http://www.w3.org/2001/XMLSchema-instance%22>;;>
> >       <soapenv:Body>
> >          <ns1:AddResponse
> >
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> <http://schemas.xmlsoap.org/soap/encoding/%22>;;
> > xmlns:ns1="http://tempuri.org/" <http://tempuri.org/%22>;;>
> >             <AddReturn
> > xsi:type="xsd:base64Binary">OEduWg==</AddReturn>
> >          </ns1:AddResponse>
> >       </soapenv:Body>
> >    </soapenv:Envelope>
> >
> >
> > --- Thomas Beaujard <th...@yahoo.fr> wrote:
> >
> > > Thanks for your answer, I will try to explain my
> > > problem more precisely:
> > > In fact, I generated my code from WSDL2java with a
> > > wsdl file and a xsd file as input. In the xsd file
> > I
> > > defined the response as being xsd:base64binary.
> > > Here is the service definition in my
> > > server-config.wsdd:
> > >  <service name="DocContent" provider="java:RPC"
> > > style="document" use="literal">
> > >   <operation name="getDocument"
> > qname="getDocument"
> > > returnQName="ns1:GMDSRESPCT"
> > > returnType="ns1:GMDSRESPCT" soapAction=""
> > > xmlns:ns1="...">
> > >    <parameter qname="ns1:GMDSREQCT"
> > > type="ns1:GMDSREQCT"/>
> > >    <fault class="com.....messages.GMDSERRCT"
> > > qname="ns1:GMDSERRCT" type="ns1:GMDSERRCT"/>
> > >   </operation>
> > >   <parameter name="allowedMethods"
> > > value="getDocument"/>
> > >   <parameter name="typeMappingVersion"
> > value="1.2"/>
> > >   <parameter name="wsdlPortType"
> > > value="DocContent"/>
> > >   <parameter name="className"
> > >
> >
> value="com.....webservice.GetDocumentSoapBindingImpl"/>
> > >   <parameter name="wsdlServicePort"
> > > value="DocContent"/>
> > >   <parameter name="wsdlTargetNamespace"
> > > value="...."/>
> > >   <parameter name="wsdlServiceElement"
> > > value="DocContentService"/>
> > >   <parameter name="schemaUnqualified"
> > > value="......"/>
> > >   <typeMapping
> > >
> >
> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
> > > encodingStyle="" qname="ns2:&gt;GMDSREQCT"
> > >
> >
> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
> > > type="java:com......messages.GMDSREQCT"
> > > xmlns:ns2="....."/>
> > >   <typeMapping
> > >
> >
> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
> > > encodingStyle="" qname="ns3:&gt;GMDSRESPCT"
> > >
> >
> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
> > > type="java:com.....messages.GMDSRESPCT"
> > > xmlns:ns3="....."/>
> > >   <typeMapping
> > >
> >
> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
> > > encodingStyle="" qname="ns4:&gt;GMDSERRCT"
> > >
> >
> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
> > > type="java:com....messages.GMDSERRCT"
> > > xmlns:ns4="..."/>
> > >  </service>
> > >
> > > Here is the class corresponding to the response :
> > >  public class GMDSRESPCT implements Serializable {
> > >     private byte[] CONTENT;
> > >     private
> > >     public GMDSRESPCT() {
> > >     }
> > >
> > >     public GMDSRESPCT(byte[] CONTENT) {
> > >            this.CONTENT = CONTENT;
> > >     }
> > >
> > >     public byte[] getCONTENT() {
> > >         return CONTENT;
> > >     }
> > >
> > > So the web service should return an object
> > > GMDSRESPCT. But I get the error and when I use
> > > tcpmon to see the messages exchanged, I notice
> > that
> > > the response include <CONTENT> tag for every
> > single
> > > byte instead of having the array of byte within
> > the
> > > tag <CONTENT>.
> > >
> > > Hope it's not too messy.
> > >
> > > Cheers
> > >
> > > Thom
> > >
> > >
> > > ----- Message d'origine ----
> > > De : WJ Krpelan <kr...@yahoo.com>
> > > À : axis-dev@ws.apache.org
> > > Envoyé le : Jeudi, 30 Août 2007, 17h18mn 03s
> > > Objet : Re: Tr : Axis problem returning byteArray
> > >
> > >
> >
> === message truncated ===


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org