Implementando um Web Service simples
O objetivo é aprender, então será criado um serviço bem simples. O serviço é a soma de duas variáveis inteiras retornando o resultado. Este exemplo poderá servir para qualquer outra implementação. Abaixo está a classe implementada. O nome do arquivo é Servico.java:
public class Servico {
public int soma(int valor1, int valor2) {
return valor1 + valor2;
}
}
Agora só falta disponibilizá-lo no nosso servidor para o mundo acessar. E, para fazer isso, deve-se alterar o nome do arquivo de Servico.java para Servico.jws, coloca-lo no diretório: CATALINA_HOME / webapps / axis / e iniciar o servidor, se ele já não estiver iniciado. Se já estiver iniciado, o seu Web Service está publicado.
Os arquivos. jws são lidos pelo Axis e representam Java Web Services. O Axis se baseará nesses arquivos (. jws) para criar os arquivos de definição WSDL. Todos os métodos públicos existentes nessas classes serão automaticamente disponibilizados para terceiros.
Criar documentos XML é demorado e, muitas vezes, chato. Gerar o WSDL é uma característica muito relevante na escolha de uma implementação de SOAP e o Axis é um dos poucos frameworks que conseguem fazer essa façanha de maneira transparente para o desenvolvedor. É por esse motivo que ele é altamente recomendado na construção de Web Services.
Para acessar o Web Service criado basta abrir um navegador e ir ao endereço: http://localhost:8080/axis/Servico.jws . Da mesma forma que os outros dois Web Services foram vistos, este também terá um link para ver a especificação WSDL, e novamente poderá ser visto ou não dependendo do seu navegador.
O arquivo WSDL da classe Servico ficará como abaixo:
<?xml version=”1.0″ encoding=”UTF-8″?>
<wsdl:definitions targetNamespace=”http://localhost:8080/axis/Servico.jws”
xmlns=”http://schemas.xmlsoap.org/wsdl/”
xmlns:apachesoap=”http://xml.apache.org/xml-soap”
xmlns:impl=”http://localhost:8080/axis/Servico.jws”
xmlns:intf=”http://localhost:8080/axis/Servico.jws”
xmlns:soapenc=”http://schemas.xmlsoap.org/soap/encoding/”
xmlns:wsdl=”http://schemas.xmlsoap.org/wsdl/”
xmlns:wsdlsoap=”http://schemas.xmlsoap.org/wsdl/soap/”
xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>
<wsdl:message name=”somaRequest”>
<wsdl:part name=”valor1″ type=”xsd:int”/>
<wsdl:part name=”valor2″ type=”xsd:int”/>
</wsdl:message>
<wsdl:message name=”somaResponse”>
<wsdl:part name=”somaReturn” type=”xsd:int”/>
</wsdl:message>
<wsdl:portType name=”Servico”>
<wsdl:operation name=”soma” parameterOrder=”valor1 valor2″>
<wsdl:input message=”impl:somaRequest” name=”somaRequest”/>
<wsdl:output message=”impl:somaResponse” name=”somaResponse”/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name=”ServicoSoapBinding” type=”impl:Servico”>
<wsdlsoap:binding style=”rpc” transport=”http://schemas.xmlsoap.org/soap/http”/>
<wsdl:operation name=”soma”>
<wsdlsoap:operation soapAction=”"/>
<wsdl:input name=”somaRequest”>
<wsdlsoap:body encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/”
namespace=”http://DefaultNamespace” use=”encoded”/>
</wsdl:input>
<wsdl:output name=”somaResponse”>
<wsdlsoap:body encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/”
namespace=”http://localhost:8080/axis/Servico.jws” use=”encoded”/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name=”ServicoService”>
<wsdl:port binding=”impl:ServicoSoapBinding” name=”Servico”>
<wsdlsoap:address location=”http://localhost:8080/axis/Servico.jws”/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Analisar este arquivo é essencial para entender a profundidade da implementação. Uma das linhas mais importantes para este arquivo é a 19ª linha, onde define-se o nome do método e o nome de seus parâmetros. Eles deverão ser de conhecimento público para que as interfaces cliente consigam se comunicar com o Web Service.