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…
Parâmetros de saída no Axis
7 Respostas
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!
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 ?
Estes valores são objetos do Java ou classes suas?
se forem classes suas, vc tem q serializa-los antes de retornar…
Desculpe mas … vc pode dar uma explicada no que seria “serializar” ?
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
Boa explicação, obrigado. Vou ver isso aqui e q q coisa eu posto. Valeu !
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?