Realizando um teste básico
O Axis aceita que um Web Service seja chamado via uma requisição HTTP-GET. Portanto, ao digitar um endereço é possível testar o web service. No exemplo deste artigo o endereço é este: http://localhost:8080/axis/Servico.jws?method=soma&valor1=2&valor2=4 .
Como pode-se notar, o endereço é a junção de um namespace, que é o endereço do WebService representado por http://localhost:8080/axis/Servico.jws , a variável method que, como seu nome diz, contém o nome do método que se deseja executar, e uma sequência dos parâmetros deste método. Lembrando que o nome dos parâmetros deve ser o mesmo definido na função da classe.
O resultado da execução é um documento XML com a resposta 6 . Novamente, dependendo do browser não será visivel as tags XML. O XML que retornou na execução está abaixo:
<?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>
<somaResponse soapenv:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/”>
<somaReturn xsi:type=”xsd:int”>6</somaReturn>
</somaResponse>
</soapenv:Body>
</soapenv:Envelope>
Criando um cliente em Java para acessar o Servidor
O cliente também é uma classe simples, mas exige conhecimento em algumas classes não tão comuns no dia-a-dia.
As classes Service e Call são classes do Axis , portanto, para compilar e executar esta classe é necessário que todo o diretório lib, encontrado dentro do zip do Axis esteja no CLASSPATH da aplicação.
Visto este detalhe, abaixo encontra-se o arquivo fonte do cliente de Web Service. Esta classe fará a conexão ao Web Service para somar 2 com 4 e irá apresentar o resultado 6 na saída padrão.
import org.apache.axis.client.Service;
import org.apache.axis.client.Call;
public class Cliente {
public static void main(String[] args) throws Exception {
// Endereço, local onde encontra-se o Web Service
String local = “http://localhost:8080/axis/Servico.jws”;
// Criando e configurando o serviço
Call call = (Call) new Service().createCall();
// Configurando o endereço.
call.setTargetEndpointAddress(local);
// Marcando o método a ser chamado.
call.setOperationName(“soma”);
// Parâmetros da função soma.
Object[] param = new Object[]{new Integer(2),new Integer(4)};
// Retorno da Função
Integer ret = (Integer)call.invoke(param);
// Imprime o resultado: ret = 2 + 4.
System.out.println(“Resultado da soma : “ + ret);
}
}
Este código está dentro de um arquivo chamado Cliente.java, após compilar e executar esta classe exibirá o resultado ” Resultado da soma: 6 “ como desejado.
O framework do Axis trata a primitiva int e a classe wrapper Integer como sendo iguais. Portanto, tanto faz usar uma ou outra. Neste exemplo, foi criado o Web Service com dois parâmetros int e aqui no cliente estamos usando dois parâmetros Integer .
Como pode-se notar, o framework do Axis abstrai qualquer trabalho com XML, evitando que o desenvolvedor necessite conhecer a sintaxe do XML do SOAP.
E com isso, chegamos ao fim deste tutorial, boa sorte no desenvolvimento do seu webservice!