WSDL?

On 1/5/06, Claudio Miranda <[EMAIL PROTECTED]> wrote:


   Hi all, I did a improvement since my last question. Now the ws client (axis) can send the request with timeouts, thanks.
   Now I am facing another issue, I don't know if it is on the server or client side, please take a look.
   I know the problem is the server returning a string while the client try to use a Escohida.class, but I don't have (yet) no clue, where the problem is. On the client side, I don't have any xml descriptor file. There is no exception on the server side.
   The server is Sun App Server 8, with JAX-RPC. The client is Axis 1.3.

### Exception on client side.
Caused by: org.xml.sax.SAXException: Bad types (class java.lang.String -> class claudius.Escolhida)
       at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:286)
       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)

###  request
<?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>
        <ns1:good soapenv:encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/"; xmlns:ns1="urn:Music">
           <Musica_1 xsi:type="ns1:Musica">
              <numero xsi:type="xsd:int">6</numero>
           </Musica_1>
        </ns1:good>
     </soapenv:Body>
  </soapenv:Envelope>

### response
<?xml version="1.0 " encoding="UTF-8"?>
  <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsd=" http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:enc=" http://schemas.xmlsoap.org/soap/encoding/"; xmlns:ns0="urn:Music" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">;
     <env:Body>
        <ns0:goodResponse>
           <result xsi:type="xsd:string">Scorpions/05 - You &amp; I</result>
        </ns0:goodResponse>
     </env:Body>
  </env:Envelope>

### Client class
           ServiceFactory factory = ServiceFactory.newInstance();
           Service service = factory.createService( new QName(qnameService));
           QName port = new QName(qnamePort);
           Call call = service.createCall(port);
           org.apache.axis.client.Call axisCall = (org.apache.axis.client.Call)call;
           axisCall.setOption("sendMultiRefs", new Boolean(false));

           QName q1 = new QName(BODY_NAMESPACE_VALUE, "Musica");
           axisCall.registerTypeMapping(Musica.class, q1, BeanSerializerFactory.class, BeanDeserializerFactory.class);
           QName q2 = new QName(BODY_NAMESPACE_VALUE, "Escolhida");
           axisCall.registerTypeMapping(Escolhida.class, q2, BeanSerializerFactory.class, BeanDeserializerFactory.class);

           call.setTargetEndpointAddress(sei);
           call.setProperty(Call.OPERATION_STYLE_PROPERTY, "rpc");
//            call.setProperty ("axis.connection.timeout", new Integer(1000));
           call.setProperty(Call.SOAPACTION_USE_PROPERTY, new Boolean(true));
           call.setProperty(Call.SOAPACTION_URI_PROPERTY, "");
           call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY , NamespaceConstants.NSURI_SOAP_ENCODING);

           call.addParameter("Musica_1", q1, ParameterMode.IN);
           Musica[] params = new Musica[]{ new Musica(6) };
           call.setReturnType(q2, Escolhida.class);
           axisCall.setReturnClass(Escolhida.class);
           call.setOperationName(new QName(BODY_NAMESPACE_VALUE,"good"));
           Escolhida result = (Escolhida)call.invoke(params);

--
  Claudio Miranda
_______________________________________________________________
  http://www.claudius.com.br/blog               http://www.summa-tech.com
  http://www.soujava.org.br

Reply via email to