@WebService
Recebi a missão de desenvolver e disponibilizar alguns serviços via web, andei pesquisando e achei muita coisa, muita mesmo, mas parace que em todos os tutoriais e exemplo se fazia necessário a complexidade, enfim, o pessoal gosta de complicar.
O exemplo é simples, vamos recebe um texto e retorna o mesmo totalmente em maíusculo, para isso usarei algumas annotations do Java 6 e efetuaremos o deploy no glassfish.
Necessidade:
- Servidor de aplicações Web JEE, exemplo Glassfish ou JBoss.
- Projeto web criado na sua IDE favorita(eclipse/NetBeans).
- Ter a noção de que o servidor JEE fará ao deplay da sua aplicação.
Passo 1:
Criar a interface com os serviços que estaremos disponibilizando:
@javax.jws.WebService
public interface ITextos {
public String getTextoMaiusculo (String texto);
}
Passo 2:
Criar a classe implementadora, que realmente efetuará a transformação do texto.
@javax.jws.WebService
public class TextosImpl implements ITextos {@javax.jws.WebMethod(operationName = “converteParaMaiusculo”)
public String getTextoMaiusculo(@javax.jws.WebParam(name = “texto”) String texto) {return texto.toUpperCase();
}
}
Deve estar se perguntando o que são estas anotações, explico:
@WebService: Usada para especificar que a classe e um serviço web ou que a interface define um web service. Parametros aceitaveis:
@WebMethod(operationName=”salvar”): Quando utilizado deixa bem claro que o método envolvido pela anotação será um serviço. O parametro operationName representa o nome da operação.
@javax.jws.WebParam: Usada para definir o nome do paramentro, sem esta anotação os parametros serão renomeados para o padrão args0, args1…argsn, dificultando a vida de quem esta criando o cliente para consumir o Web Service, visto que é mais prático ler nomeDoUsuario do que args3.
Passo 3:
Efetuar o deploy(run):
- Eclispe: clique com o botão direito sobre o nome do projeto -> Run as -> Run on Server. Escolha o servidor JEE.
- NetBeans: Clique com o botão direito sobre o nome do projeto -> Run.
Verificar se o serviço que estamos disponibilizando esta funcionando:
Em meus testes estou usando um servidor local com a url: http://localhost:8080/YRossWebService e a url para o web service ficou http://localhost:8080/YRossWebService/TextosImplService, observe que o nome da classe TextosImpl que representa nosso serviço, foi adicionado de Service. Ao acessar esta url o container processará e no browser obteremos algo como:
Web Services
| Endpoint | Information | ||||||||||
|
|
Oberverve que um WSDL foi criado para que os clientes de web services possam utiliza-lo para criar sua aplicação de consumo. Em outro post vou criar uma cliente baseado neste web service. Ao acessar esta url http://localhost:8080/YRossWebService/TextosImplService?wsdl o wsdl é exposto como descrito abaixo.
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<definitions xmlns:wsu=”http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd” xmlns:soap=”http://schemas.xmlsoap.org/wsdl/soap/” xmlns:tns=”http://webservices.yross.com/” xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns=”http://schemas.xmlsoap.org/wsdl/” targetNamespace=”http://webservices.yross.com/” name=”TextosImplService”>
<types>
<xsd:schema>
<xsd:import namespace=”http://webservices.yross.com/” schemaLocation=”http://localhost:8080/YRossWebService/TextosImplService?xsd=1” />
</xsd:schema>
</types>
<message name=”converteParaMaiusculo”>
<part name=”parameters” element=”tns:converteParaMaiusculo” />
</message>
<message name=”converteParaMaiusculoResponse”>
<part name=”parameters” element=”tns:converteParaMaiusculoResponse” />
</message>
<portType name=”TextosImpl”>
<operation name=”converteParaMaiusculo”>
<input message=”tns:converteParaMaiusculo” />
<output message=”tns:converteParaMaiusculoResponse” />
</operation>
</portType>
<binding name=”TextosImplPortBinding” type=”tns:TextosImpl”>
<soap:binding transport=”http://schemas.xmlsoap.org/soap/http” style=”document” />
<operation name=”converteParaMaiusculo”>
<soap:operation soapAction=”" />
<input>
<soap:body use=”literal” />
</input>
<output>
<soap:body use=”literal” />
</output>
</operation>
</binding>
<service name=”TextosImplService”>
<port name=”TextosImplPort” binding=”tns:TextosImplPortBinding”>
<soap:address location=”http://localhost:8080/YRossWebService/TextosImplService” />
</port>
</service>
</definitions>
Agora basta disponibilizar o endereço do wsdl de seu serviço para os clientes. Este é um exemplo bem superficial que tem como objetivo a iniciação com Web Services.
3 comentários até agora
Leave a reply
Vc já postou o Client ?
obrigado
Amigos estou desenvolvendo uma npova versão deste tutorial, neste tentarei explicar o serviço e o cliente.
Wow! what an idea ! What a concept ! Beautiful .. Amazing …