Home   Java   Construindo Web Service com JAX-WS

Construindo Web Service com JAX-WS

Construindo Web Service com JAX-WS

WebService-JAX-WS02
Olá amigos,
Hoje criaremos um web Service com a API JAX-WS. JAX-WS é uma tecnologia para a construção de serviços web e clientes que se comunicam via XML. JAX-WS permite aos desenvolvedores escrever serviços orientados a mensagem, bem como serviços de Chamada Remota de Procedimentos (RPC) orientadas para a web.

O JAX-WS é baseado no protocolo SOAP – uma operação de chamada a um serviço web que é representado por um protocolo baseado em XML. A especificação SOAP define a estrutura de envelope, regras de codificação, e as convenções para a representação de chamadas de serviço web e respostas. Essas chamadas e respostas são transmitidas como mensagens SOAP (arquivos XML) sobre HTTP.

Para quem já trabalhou com web Service, sabe que esta é uma forma de integrar sistemas através de chamadas de rede e independente de linguagem de programação.
Então vamos lá! Mãos à obra.


1. Criando a interface


Para começarmos vamos construir nossa Interface de métodos. Ela é responsável por disponibilizar as assinaturas de métodos que serão implementados por nossa classe de serviço. Em seguida esses métodos serão publicados em um servidor.

Digite o código abaixo em um arquivo chamado “GeraNumero.java”:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package br.com.feltex.webservice.service;
 
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;
 
@WebService
@SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL)
public interface GeraNumero {
	@WebMethod
	public double gerarNumero();
}

2. Classe que implementa o serviço


Em seguida temos que criar a classe que possui o método de geração de números aleatórios. Observe que ele implementa a Interface “GeraNumero”. Por isso a classe deve implementar os métodos definidos por ela.

1
2
3
4
5
6
7
8
9
10
11
package br.com.feltex.webservice.service;
 
import javax.jws.WebService;
 
@WebService(endpointInterface = "br.com.feltex.webservice.service.GeraNumero")
public class GeradoNumeroImpl implements GeraNumero {
	@Override
	public double gerarNumero() {
		return Math.random() * 11000;
	}
}

3. Publicação do Serviço


Por último teremos a classe que irá inicializar o nosso serviço e deixará disponível a chamada via HTTP.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package br.com.feltex.webservice.tool;
 
import javax.xml.ws.Endpoint;
 
import br.com.feltex.webservice.service.GeradoNumeroImpl;
 
public class Publicador {
 
	public static void main(String[] args) {
		System.out.println("Início Publicador");		 
		Endpoint.publish("http://localhost:8080/gerador",new GeradoNumeroImpl());
		System.out.println("Fim Publicador");
	}
}

4. Verificação da disponibilidade do serviço.


Execute a classe Publicador e você verá que o serviço estará no ar!
Para você ver se o serviço está no ar, será necessário abrir o browser e fazer a seguinte chamada:http://localhost:8080/gerador?wsdl

O resultado deve ser algo parecido como:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?xml version="1.0" encoding="UTF-8"?><!-- Published by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. --><!-- Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. --><definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://service.webservice.feltex.com.br/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://service.webservice.feltex.com.br/" name="GeradoNumeroImplService">
<types>
<xsd:schema>
<xsd:import namespace="http://service.webservice.feltex.com.br/" schemaLocation="http://localhost:8080/gerador?xsd=1"></xsd:import>
</xsd:schema>
</types>
<message name="gerarNumero">
<part name="parameters" element="tns:gerarNumero"></part>
</message>
<message name="gerarNumeroResponse">
<part name="parameters" element="tns:gerarNumeroResponse"></part>
</message>
<portType name="GeraNumero">
<operation name="gerarNumero">
<input wsam:Action="http://service.webservice.feltex.com.br/GeraNumero/gerarNumeroRequest" message="tns:gerarNumero"></input>
<output wsam:Action="http://service.webservice.feltex.com.br/GeraNumero/gerarNumeroResponse" message="tns:gerarNumeroResponse"></output>
</operation>
</portType>
<binding name="GeradoNumeroImplPortBinding" type="tns:GeraNumero">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"></soap:binding>
<operation name="gerarNumero">
<soap:operation soapAction=""></soap:operation>
<input>
<soap:body use="literal"></soap:body>
</input>
<output>
<soap:body use="literal"></soap:body>
</output>
</operation>
</binding>
<service name="GeradoNumeroImplService">
<port name="GeradoNumeroImplPort" binding="tns:GeradoNumeroImplPortBinding">
<soap:address location="http://localhost:8080/gerador"></soap:address>
</port>
</service>
</definitions>

5. Conclusão

Esses são os passos essenciais para disponibilizarmos um Web Service em Java para que seja utilizado por outras aplicações. Quem desejar fazer uso desse serviço deve criar um Cliente através do WSDL disponibilizado hoje. É possível também utilizar um cliente como o SoapUI uma ferramenta que facilita o teste de webservices.

Por hoje é só! E vida que segue.

Links relacionados


WebService com EJB Hello Wolrd

Web Service RESTEasy no servidor WildFly – Hello world

Tutorial JAX-WS

Não se esqueça de curtir este post nas rede sociais. Dê a sua contribuição social e ajude o autor:

Deixe uma resposta

Get Best Services from Our Business.