A utilização do JSWDP para construção de Web Services
Fabiana Ferreira Cardoso1, Francisco A. S. Júnior1, Madianita Bogo1
1
Centro de Tecnologia da Informação – Centro Universitário Luterano de Palmas
(CEULP/ULBRA)
Caixa Postal 160 – 77.954-070 – Palmas – TO – Brazil
{fabianac,franciscojr,mbogo}@ulbra-to.br
Abstract. This paper presents a search about JWSDP and presents this
package use in Web Services developer, being that for this it was carried
through and is presented a search about the main concepts related to the Web
Services. To show the JWSDP functionality, was developed a Java application,
that use the API Jax-RPC. The server program offers services that will can
access by clients rograms developed.
Resumo. Este artigo apresenta um estudo sobre o JWSDP e descreve a
utilização desse pacote na construção de Web Services, sendo que para isso
foi realizado e é apresentado um estudo sobre os principais conceitos
relacionados aos mesmos. Para mostrar a funcionalidade do JWSDP, foi
desenvolvido um aplicativo em Java que utilizou a API JAX-RPC. O programa
servidor oferece serviços que poderão ser acessados.
1. Introdução
As aplicações distribuídas são programas que podem ser executados em diversos tipos
de microcomputadores, realizando a troca de informações a partir de uma rede de
comunicação como por exemplo, a Internet. Atualmente, existem aplicações
distribuídas implementadas em soluções não adaptáveis a diversas necessidades, como
integração entre sistemas, comunicação entre empresas. Este fato torna a
compatibilidade e integração entre os diversos sistemas operacionais existentes uma
ação complexa.
Assim, para que exista o compartilhamento de informações entre ambientes
heterogêneos é importante utilizar padrões que especifiquem as formas de comunicação.
Uma das soluções é a utilização de mecanismos de RPC (Remote Procedure Call), que
definem um conjunto de regras utilizadas na construção de aplicações distribuídas,
permitindo que as funções sejam chamadas remotamente, de forma transparente ao
usuário/desenvolvedor (TANENBAUM, 1992).
Existem vários mecanismos de chamada a procedimento remoto, dentre eles podem ser
citados: CORBA, RMI, Web Services, entre outros.
O CORBA (Common Object Request Broker Architecture) é um middleware, ou seja, é
uma camada de software intermediária que permite a comunicação entre aplicações
cliente-servidor heterogêneas, escritas em diferentes linguagens que se comunicam
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
usando uma IDL (Interface Definition Language – Linguagem de Definição de
Interface) e um ORB (Object Request Broker) (SILBERSCHATZ, 2000).
A Invocação de Método Remoto - RMI (Remote Method Invocation) - é um mecanismo
de RPC orientado a objetos, desenvolvido pelo JAVA que realiza a chamada de um
método que está localizado em uma JVM (Java Virtual Machine) remota, a partir da
utilização de uma mesma sintaxe de invocação de métodos na máquina virtual local
(SILBERSCHATZ, 2000).
Já o Web Service é uma tecnologia recente para a comunicação entre aplicações
distribuídas, que permite o oferecimento de serviços interativos na Web através da troca
de informações e mensagens em formato XML, utilizando o HTTP na transferência dos
dados.
Os serviços disponíveis pelos Web Services podem ser acessados por aplicações
distintas, por meio de conexões abertas, independentes de plataforma tecnológica ou
linguagens de programação. Essa interoperabilidade se deve aos padrões em que se
baseiam os Web Services: XML, SOAP, UDDI, WSDL e HTTP (HENDRICKS, 2002).
Assim, para (BASIURA, 2003) os Web Services tentam resolver o mesmo problema que
o CORBA ou RMI, ou seja, como fazer chamadas a objetos remotos. Para isto utiliza o
protocolo de acesso a objeto simples (SOAP) que é baseado em protocolos Internet
como o HTTP enquanto que o CORBA é baseado em um formato denominado Common
Data Representation (CDR) e o RMI que é exclusivo da plataforma Java.
Quando se utiliza uma plataforma ampla e heterogênea, como a Internet, é interessante a
utilização de mecanismos Web Services, pois foram projetados para disponibilizar
serviços interoperáveis.
Assim, para que os Web Services possam ser criados, existem vários pacotes de
desenvolvimento, dentre eles, pode ser citado o JWSDP (Java Web Service Developer
Pack – Pacote para Desenvolvimento de Web Services em Java), que oferece um
conjunto de soluções para construir, testar e publicar aplicações distribuídas utilizando
os conceitos do XML (JWSDP,2003).
2. Web Services
A tecnologia Web Services é voltada para o desenvolvimento de aplicações distribuídas
que se comunicam através do protocolo de transporte HTTP, baseada nos seguintes
padrões: XML - utilizada para descrever e estruturar informações; SOAP - protocolo
para vínculo de aplicações a serviços web; UDDI - padrão para publicação ou
localização de serviços web; WSDL - padrão que usa XML para descrever serviços
Web; e HTTP – protocolo que realiza o transporte das mensagens, no formato XML
entre as aplicações (HENDRICKS, 2002), conforme pode ser verificado na figura 1.
Publicação e Localização de serviços - UDDI
Descrição de serviços - WSDL
Troca de Mensagens entre Web Services - SOAP
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
Codificação
de Dados
XML, XML Schema
CEULP/ULBRA – Curso de Sistemas de Informação
– Palmas
– -TO
Rede de Transporte – HTTP, SMTP e outros
Figura 1 – Pilha básica de um Web Service baseada em (BASIURA, 2003).
Os Web Services são criados segundo o modelo genérico que é baseado nas interações
entre papéis e operações, também conhecido como arquitetura e integração de Web
Service, apresentado na figura 2.
Registro
do Serviço
Publicar
(UDDI)
pesquisar
Provedor de
Serviços
Consumidor
de Serviços
Vincular
(SOAP-HTTP)
Figura 2- Modelo genérico de um Web Service modificado de ( HENDRICKS, 2002).
A figura 2 mostra a interação entre os papéis e suas respectivas operações. Neste
modelo, é possível observar que o provedor de serviços realiza a publicação de um
serviço Web em um registro de serviço (UDDI) que é pesquisado por um o consumidor
de serviços que, por sua vez, realiza um vínculo com provedor de serviços, obtendo,
assim, acesso a todos os serviços Web registrados no registro de serviço.
Assim, BASIURA (2003) define o ciclo de vida de um Web Service sendo composto por
6 itens :
1.
2.
3.
4.
5.
6.
Criação do Web Service;
Divulgação do Web Service em um registro UDDI;
Localização do Web Service;
Obtenção da descrição do Web Service através da WSDL a partir do
acesso do consumidor do Web Service em um provedor Web Service;
Criação do Proxy e do cliente;
Chamada do Web Service através do SOAP.
Existem ainda outras tecnologias que pode implementar Web Services, como Asp.Net,
que oferecem recursos avançados para a criação de Web Service, mas que necessita de
investimento para a utilização, já utilizando o JWSDP, uma pacote desenvolvido em
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
Java, que é uma plataforma free, se torna mais acessível para qualquer pessoa que deseje
implementar um Web Service.
3. JWSDP
O JWSDP (Java Web Service Developer Pack – Pacote de Desenvolvimento de Web
Service em Java) é um conjunto de aplicações que permitem construir, testar e distribuir
aplicativos XML, Web Services e aplicações Web (JWSDP, 2003). Foi desenvolvido
pela Sun Microsystems, com a finalidade de reunir tecnologias utilizadas pelos Web
Services em todo o ciclo de desenvolvimento e permitir o processamento de documentos
XML.
Para a construção de Web Service utilizando o JWSDP, existem várias APIs e diversas
ferramentas para a geração de artefatos necessários tanto para criação quanto para a
publicação de serviços. Essas API´s são (ROCHA, 2002):
SAAJ: módulo composto por um conjunto de API’s para manipulação de
envelopes SOAP, permitindo a comunicação baseada em eventos e em RPC.
JSF: permite a implementação de interfaces do usuário para aplicações
JavaServer. Com o modelo de programação definido, fornece ganho no
desenvolvimento de aplicações Web pelo reuso de componentes da página,
conexão desses componentes com os dados da aplicação, e ligação dos eventos
do lado cliente com os manipuladores dos eventos no lado servidor. Com
javaserver faces, aplicações web tratam toda a complexidade de gerenciar a
interface do usuário no servidor, permitindo desenvolvimento de aplicações
focadas no código.
JAXB: permite a geração de classes a partir de XML Schemas, eliminando a
necessidade de codificar classes para a manipulação de XML. Esta API mapeia
as classes Java a documentos XML que permite gerar JavaBeans a partir de
esquema XML possibilitando a serialização de objetos para XML e vice-versa.
JAXM: fornece uma maneira padrão de transmissão de documentos XML pela
Internet, seguindo as especificações SOAP.
JAXP: possibilita a interpretação de documentos XML a partir da utilização do
modelo DOM (Document Object Model) ou SAX (Simple API for XML
Parsing), sendo utilizado apenas para interpretar, criar e alterar mensagens.
JAXR: oferece uma forma de acesso a registros de negócios na Internet que
podem ser baseados em padrões abertos (ebXML) ou especificações de
consórcios de empresas (UDDI). Possibilita o acesso uniforme a diferentes
sistemas de registro de serviços baseados em XML. Possui uma arquitetura
dividida em JAXR cliente e JAXR provider.
JAX-RPC: permite a geração da infra-estrutura semelhante ao JAVA RMI
(Remote Metod Invocation), facilitando a utilização de Web Services no modelo
RPC. Assim, é considerada a principal API para a criação de Web Service
(JWSDP, 2003).
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
Para a elaboração do trabalho a API JAX-RPC foi escolhida por ser a forma mais fácil e
rápida de criar Web Services em Java. Os Serviços desenvolvidos em JAX-RPC
poderão ser acessados de aplicações .NET e vice-versa. Web Services viabilizam a
integração de serviços entre plataformas diferentes: interoperabilidade!
3.1 JAX-RPC
A API JAX-RPC é um módulo responsável por facilitar a utilização de Web Service no
modelo RPC. Esta API, por estar em um alto nível de abstração, permite ignorar
envelope SOAP. Ela usa a linguagem WSDL para a geração de classes de servidor e
cliente e seu pacote principal é o javax.xml.rpc.
Essa API pertence ao pacote de desenvolvimento de Web Service JWSDP, que é
implementado nos dois lados do processo de comunicação entre cliente e servidor
(JWSDP, 2003). No lado do Servidor cria-se uma interface, que expõe os métodos
disponíveis no Web Service, através de uma classe que implementa estes métodos dentro
de um programa servidor.
No momento de compilação do servidor é utilizado o wsdeploy para gerar “tie”, também
conhecidos por skeletons1, que serão responsáveis pela comunicação com os stubs2 do
cliente. Este comando, ao ser utilizado também é responsável pela geração automática
do arquivo WSDL, que descreve o serviço Web sem intervenção humana.
Depois é executado o wsdeploy, citada anteriormente, e em seguida a ferramenta deploy
(distribuição) que é responsável por publicar a aplicação em um Web Container dentro
do servidor TOMCAT, que acompanha o pacote JWSDP.
Para gerar o pacote que será utilizado pelos clientes é utilizada a ferramenta wscompile,
que gera as classes para um “stub” e um “stub factory”, de acordo as informações
descritas na WSDL, publicadas no endereço existente dentro de um arquivo XML,
denominado “config.xml”. Assim, os programas clientes precisam apenas importar o
pacote gerado e acessar os métodos do serviço publicado como se eles fossem do “stub”,
o que torna a aplicação transparente para o usuário que utiliza o programa cliente.
skeletons 1 : São responsáveis pela comunicação entre os servidores de aplicativos.
stubs 2: São responsáveis pela comunicação entre clientes.
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
A figura 3 mostra a arquitetura da API JAX-RPC para a implementação de Web
Service.
Cliente
Servido
r
Stub
Skeleton
“tie”
SOAP
JAX-RPC
JAX-RPC
HTTP
Figura 3 – Arquitetura da JAX-RPC.
Conforme pode ser observado na figura 3, a API JAX-RPC tem como finalidade
possibilitar a chamada de procedimentos remotos usando a plataforma Java. As
chamadas de procedimentos remotos entre o cliente e o servidor são transmitidas através
do stub cliente e o retorno do servidor por meio dos skeletons. As mensagens entre o
cliente e o servidor são codificadas através do SOAP e transmitidas via rede através do
HTTP.
Assim, esta API representa uma RPC através de XML baseado no SOAP, sendo que o
SOAP define a estrutura encapsulada através da codificação de regras que são
convertidas para que sejam transportadas através do protocolo HTTP. Logo, é escondido
do programador a complexidade existente nos protocolos utilizados, pois no lado
servidor o programador apenas especifica os procedimentos remotos através das
assinaturas dos métodos em uma interface e da implementação dos mesmos. No lado
cliente é implementado um programa que servirá como “Proxy” para acesso os métodos
implementados no servidor, que só precisa conhecer os stubs do servidor.
Utilizando esta API os clientes possuem a vantagem de poder escrever seus programas
em qualquer linguagem de programação e em qualquer plataforma, pois esta API não
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
faz restrições quanto a isso. Esta flexibilidade é possível pelo fato da API JAX-RPC
utilizar padrões que são definidos pelo W3C (World Wide Web Consortion), HTTP,
XML e o SOAP.
4. Aplicativo Desenvolvido
O aplicativo, denominado HelpNet, foi desenvolvido utilizando a linguagem Java
juntamente com as API’s existentes.
Banco de dados do Helpnet
O banco utilizado para a construção do aplicativo foi o Microsoft Access versão 2000.
Dentro deste banco de dados estão as tabelas Setor, Movimentacao, Solicitacao,
StatusSolicitacao, Fornecedor, Equipamento, StatuSequip, Manutencoeseq e Usuário,
que são responsáveis pelo armazenamento dos dados referentes ao gerenciamento de
equipamentos de informática conforme mostrada na figura 4.
Figura 4 – Banco de dados do HelpNet
O acesso ao bando de dados é feito pelo servidor através das implementações dos
métodos da interface.
Interface
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
A interface do aplicativo HelpNet, denominada HelpIF.java, contém as assinaturas dos
métodos a serem implementados no programa HelpImpl.java. Nesta interface são
encontradas as declarações dos métodos e parâmetros utilizados para: gerenciar
atendimentos técnicos, gerenciar equipamentos de informática, gerenciar
fornecedores de equipamentos de 0informática, gerenciar Manutenções de
equipamentos de informática, gerenciar Movimentações de equipamentos de
informática, gerenciar Setores para serem atendidos no Helpnet e gerenciar
Usuários no Helpnet.
Servidor
No programa HelpImpl.java foram implementados os métodos descritos no programa
de interface, possibilitando o acesso ao banco de dados, para a realização de operações
tais como: inserir, alterar, pesquisar e remover dados através dos comando em SQL:
SELECT, INSERT, DELETE e UPDATE.
Na implementação dos métodos, primeiramente, é criado um objeto Stub, ligado a classe
Helpnet_Impl, gerada na compilação do cliente, que está dentro do pacote helpservice.
Em seguida, cria-se um objeto da interface HelpIF, denominado ws, para que o cliente
tome conhecimento dos métodos oferecidos pelo servidor, como seus parâmetros de
entrada e tipo de retorno. Depois esse objeto é ligado ao stub.
Assim, sempre que o cliente precisar acessar um método do servidor deverá utilizar a
sintaxe ws.nomeDoMétodo(parâmetros).
Clientes
Clientes implementados em qualquer linguagem de programação ou em qualquer
plataforma, podem acessar os servicços os serviços do HelpNet, através dos stubs citado
anteriormente.
Para criação de Web Services utilizando o JWSDP existem 4 arquivos XML que foram
alterados apenas as tags relacionadas ao Web Service desenvolvido são eles:
web.xml : Este arquivo é usado no momento da compilação do programa servidor, ele
contém o nome do serviço e sua descrição. Quando se publica um determinado serviço,
são estas informações que serão apresentados dentro do servidor TOMCAT;
config.xml: Este arquivo é utilizado pelo cliente no momento da compilação do
programa que acessa o servidor;
config-interface.xml : Este arquivo contém campos de configuração de um serviço.
Nele serão encontrados o nome do serviço, o nome do pacote que será utilizado pelo
servidor e o cliente;
jaxrpc-ri.xml: Este arquivo contém informações sobre o serviço a ser publicado.
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
<?xml version="1.0" encoding="UTF-8"?>
<configuration
xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
<wsdl location="http://localhost:8080/Helpnet/help?WSDL"
packageName="helpservice"/>
</configuration>
Figura 6. Arquivo config.xml
5. Conclusões
Este trabalho foi realizado com a finalidade de mostrar uma aplicação distribuída
utilizando o JWSDP, que é o pacote de desenvolvimento de Web Services desenvolvido
pela SUN Microsystem, que foi escolhido por ser disponibilizado gratuitamente,
permitir a interoperabilidade entre aplicações e ser uma tecnologia recente com ampla
possibilidade de estudos e testes, ainda não realizados.
Para a realização do trabalho, foi necessária a compreensão de assuntos como: Web
Services, Protocolos SOAP, HTTP, Linguagem XML e a especificação XML-RPC, o
conhecimento de desenvolvimento de aplicações em Java e o pacote JWSDP
De acordo com os estudos apresentados nesse trabalho, pode-se afirmar que Web
Service é uma tecnologia interessante do ponto de vista tecnológico e econômico, uma
vez que a mesma independe de plataforma e utiliza padrões aceitos mundialmente,
fazendo com que os serviços oferecidos tornem-se interoperáveis.
Desta maneira, empresas que necessitam de acesso a serviços na Web não precisam se
preocupar em mudar plataformas de desenvolvimento, sistemas operacionais e
linguagem de programação para se adaptarem ao serviço, trazendo para a empresa mais
investimentos e parcerias.
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
6. Referências Bibliográficas
BASIURA, Russ et al. Professional ASP.NET Web Service. São Paulo:
Pearson Education, 2003.
DAUM, Berthold. Arquitetura de sistemas com XML: conteúdo, processo e
apresentação. Rio de Janeiro: Campus, 2002. Disponível em
http://www.argonavis.com.br. Acesso em 23/03/2004
HENDRICKS, Mack et al. Profissional Java Web Service. Rio de Janeiro:
Editora Alta Books, 2002.
Tutorial Java Web Service. SUN Microsystem, 2003. Disponível em
<http://java.sun.com>. Acesso realizado em 08/06/2004 às 21:45
Rocha, Helder da. Como implementar Web Service em Java. São Paulo:
COMDEX, 2002.
TANENBAUM, Andrew S. Sistemas Operacionais Modernos. Rio de Janeiro:
Prentice-Hall do Brasil Ltda, 1992
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
Download

A utilização do JSWDP para construção de Web Services