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.