Parâmetros de saída no Axis

7 respostas
F

Galera, alguém tem algum exemplo que implemente parâmetros de saída com Java + Axis ? Achei um exemplos num site mas não está funcionado.
Se alguém tiver alguma coisa, por favor “poste” ai…

7 Respostas

C

Olá Falcon,
V se isso ajuda:

Consulta uma tabela de uma conexao ODBC 


import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;

import javax.xml.rpc.ParameterMode;

public class Caio2
{
   public static void main(String [] args) throws Exception {

       String endpoint = "http://localhost:8080/axis/Registro.jws";

       Service  service = new Service();
       Call     call    = (Call) service.createCall();

       call.setTargetEndpointAddress( new java.net.URL(endpoint) );
       String method = "rowCount";
       call.setOperationName( method );
       call.setReturnType( XMLType.XSD_INT );
       call.addParameter( "op1", XMLType.XSD_STRING, ParameterMode.IN );
       call.addParameter( "op2", XMLType.XSD_STRING, ParameterMode.IN );

       Integer ret = (Integer) call.invoke( new Object [] { args[0], args[1] });
       System.out.println("Resultado eh : " + ret);

   }
}

Hasta!

F

Obriado, vou dar uma analisada. É que estamso usando WebServices e estavamos tendo problema para retornar “dois” valores de um metodo. A solução era usar parametros de saída. Vc manja como eu q configuro o WSDD para suportar isso ?

A

Estes valores são objetos do Java ou classes suas?

se forem classes suas, vc tem q serializa-los antes de retornar…

F

Desculpe mas … vc pode dar uma explicada no que seria “serializar” ?

A

Seguinte.

Serializar seria converter um objeto em xml.
O objeto que vc vai retornar precisar ter métodos para fazer esta conversão, no formato SOAP.

o Axis tem um plugin (WSDL2Java) q gera as classes com os métodos de serialização, a partir do arquivo WSDL.

o esquema todo seria mais ou menos o seguinte:

vc cria a sua classe que tem os métodos q serão os serviços que vc disponibilizará no teu web services.
Depois vc configura esta classe no arquivo wsdd.

<service name="Sync" provider="java:RPC">
 <parameter name="allowedMethods" value="*"/>
 <parameter name="className" value="support.vendas.sincronizacao.web.webservice.SincronizacaoDadosWebService"/>
</service>

depois vc mapeia os objetos que vc irá retornar:
por exemplo, se eu tenho um objeto Cliente, o mapeamento no wsdd ficaria assim:

<beanMapping qname="tns2:Cliente" languageSpecificType="java:support.vendas.geral.business.entity.Cliente"/>

depois vc pega (no browser) o arquivo wsdl que o próprio axis gera. Por exemplo: no arquivo wsdd eu dei o nome de “Sync” para o meu serviço, aí vc acessa pelo browser:

http://localhost/sync/services/Sync?wsdl

aí vc salva o wsdl em algum lugar, depois vc usa o plugin WSDL2Java e ele gera as classes que fazem toda a parte de conversão de objeto para XML, no formato SOAP.

Para usar este plugin (no windows) no prompt do DOS, digite:

java org.apache.axis.wsdl.WSDL2Java Sync.wsdl

bem kra, espero ter ajudado, se alguma coisa não ficou clara, posta aí…

[]'s

F

Boa explicação, obrigado. Vou ver isso aqui e q q coisa eu posto. Valeu !

B

nesse item:

languageSpecificType="java:support.vendas.geral.business.entity.Cliente

eu posso definir tipos que meu servico vai utilizar? se eu quisesse utilizar um javabean por exemplo, apenas indicaria ali a classe?

Criado 18 de agosto de 2004
Ultima resposta 28 de mai. de 2005
Respostas 7
Participantes 4