UNIVERSIDADE DO PLANALTO CATARINENSE DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE INFORMÁTICA (BACHARELADO) DESENVOLVIMENTO DE UM WEB SERVICE EM JAVA COM ESTUDO DE CASO MARLON ROBERTO BATISTA LAGES, DEZEMBRO DE 2005. UNIVERSIDADE DO PLANALTO CATARINENSE DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE INFORMÁTICA (BACHARELADO) DESENVOLVIMENTO DE UM WEB SERVICE EM JAVA COM ESTUDO DE CASO Relatório do Trabalho de Conclusão de Curso submetido à Universidade do Planalto Catarinense para obtenção dos créditos de disciplina com nome equivalente no curso de Informática Bacharelado. MARLON ROBERTO BATISTA Orientador: Prof. Marcos André Pisching, M.Sc. LAGES, DEZEMBRO DE 2005. iii DESENVOLVIMENTO DE UM WEB SERVICE EM JAVA COM ESTUDO DE CASO MARLON ROBERTO BATISTA ESTE RELATÓRIO, DO TRABALHO DE CONCLUSÃO DE CURSO, FOI JULGADO ADEQUADO PARA OBTENÇÃO DOS CRÉDITOS DA DISCIPLINA DE TRABALHO DE CONCLUSÃO DE CURSO DO VIII SEMESTRE, OBRIGATÓRIA PARA OBTENÇÃO DO TÍTULO DE: BACHAREL EM INFORMÁTICA Prof. Marcos André Pisching, M.Sc. Orientador BANCA EXAMINADORA: Prof. Glaucio Adriano Fontana, M.Sc. Prof. Douglas Nazareno Debiazi Vargas, M.Sc. UNIPLAC UNIPLAC Prof. Angelo Augusto Frozza, Esp. Supervisor de TCC Prof.Wilson Castello Branco Neto, M.Eng. Coordenador de Curso Lages, 8 de Dezembro de 2005 iv Agradeço muito pela colaboração, compreensão, auxílio e apoio da minha namorada Clarissa, ao meu orientador e professor Marcos Pisching, ao Maurício Fronza, e especialmente a minha família, para que enfim conseguisse terminar com sucesso estes 4 anos de curso e também meu almejado trabalho. v A vocês que abriram mão de momentos de convívio, que sofreram a minha ausência, quando o dever e o estudo me chamaram; A vocês que muitas vezes, me receberam de mau humor, quase raivoso, quer pela minha ausência, por saudade ou impaciência; A vocês que tentaram ocupar as horas solitárias de todos os modos possíveis, mas reclamando a cada minuto; A vocês que agora vêem com alívio, este fim de etapa e que, por mais que não queiram demonstrar, estão mais felizes do que eu, meus sinceros abraços de carinho, reconhecimento pelo sacrifício e a promessa de fazer o máximo para que estes anos sejam lembrados, de momentos poucos, mas muito intensos. SUMÁRIO LISTA DE ILUSTRAÇÕES................................................................................... VIII LISTA DE SIGLAS......................................................................................................X RESUMO....................................................................................................................XII ABSTRACT ............................................................................................................. XIII 1 INTRODUÇÃO ................................................................................................................1 1.1 Apresentação .............................................................................................................1 1.2 Descrição do problema ..............................................................................................2 1.3 Justificativa................................................................................................................2 1.4 Objetivo geral ............................................................................................................3 1.5 Objetivos específicos.................................................................................................4 1.6 Metodologia...............................................................................................................4 2 WEB SERVICES ..............................................................................................................6 2.1 Web Services..............................................................................................................6 2.1.1 Importância dos Web Services. ......................................................................................... 7 2.2 Objetivos e vantagens da utilização ..........................................................................8 2.3 Componentes da estrutura dos Web Services ............................................................9 2.3.1 eXtensible Markup Language.......................................................................................... 10 2.3.2 Simple Object Access Protocol........................................................................................ 12 2.3.3 Web Service Description Language ................................................................................ 13 2.3.4 Universal Description, Discovery, and Integration ........................................................ 15 2.4 Funcionamento dos Web Services ...........................................................................17 2.5 Ferramentas e padrões para o desenvolvimento de Web Service ............................19 2.5.1 Principais ferramentas de desenvolvimento Java ........................................................... 19 2.5.2 Linguagem Java............................................................................................................... 20 2.5.3 Servlets ............................................................................................................................ 21 2.5.4 JavaServer Pages ............................................................................................................ 22 2.5.5 Sun Java System Application Server Platform Edition 8.1 ............................................. 23 2.5.6 Apache TomCat 5.5.7 Server........................................................................................... 23 2.5.7 Apache eXtensible Interaction System............................................................................. 23 2.6 Segurança.................................................................................................................24 2.6.1 Segurança ao nível de transporte.................................................................................... 25 2.6.2 Segurança ao nível de XML ............................................................................................ 26 2.7 Conclusão ................................................................................................................26 vii 3 IMPLEMENTAÇÃO DO WEB SERVICE .........................................................................28 3.1 Proposta da implementação.....................................................................................28 3.1.1 Estudo de caso................................................................................................................. 28 3.2 Ferramentas e ambientes utilizados para o desenvolvimento de Web Services com Java.........................................................................................................................31 3.2.1 Downloads e instalação das ferramentas........................................................................ 31 3.2.2 NetBeans 4.1.................................................................................................................... 32 3.2.3 SJSAS 8.1 ......................................................................................................................... 32 3.2.4 Interbase 6 ....................................................................................................................... 33 3.3 Implementação do serviço Web...............................................................................34 3.3.1 Análise dos serviços a serem implementados com base no estudo de caso .................... 34 3.3.2 Configurando o serviço através do NetBeans ................................................................. 34 3.4 Implementação do cliente........................................................................................40 3.5 Manutenção do cadastro de peças ...........................................................................42 3.6 Arquivos do Web Service ........................................................................................43 3.6.1 Resultados gerados (telas do programa) ........................................................................ 47 3.7 Arquivos JARs, WARs e EARs ..............................................................................50 3.7.1 Java ARchive ................................................................................................................... 50 3.7.2 Web ARchive.................................................................................................................... 51 3.7.3 Enterprise ARchive .......................................................................................................... 51 3.8 Conclusão ................................................................................................................52 4 PUBLICAÇÃO DO SERVIÇO WEB.................................................................................54 4.1 O que é publicação do serviço Web.........................................................................54 4.1.1 Discovery ......................................................................................................................... 55 4.2 Autenticação de usuários.........................................................................................56 4.2.1 Sites operadores .............................................................................................................. 57 4.3 Registrando o serviço Web ......................................................................................57 4.3.1 UDDI business Registry .................................................................................................. 57 4.3.2 Private Registry ............................................................................................................... 58 4.4 APIs de busca e publicação .....................................................................................58 4.4.1 API de Publicação ........................................................................................................... 59 4.4.2 API de Busca ................................................................................................................... 59 4.5 Conclusão ................................................................................................................59 5 CONSIDERAÇÕES FINAIS ............................................................................................60 REFERÊNCIAS BIBLIOGRÁFICAS ......................................................................62 BIBLIOGRAFIA COMPLEMENTAR.....................................................................65 APÊNDICES ................................................................................................................66 ANEXOS.......................................................................................................................67 LISTA DE ILUSTRAÇÕES FIGURA 1 FIGURA 2 FIGURA 3 FIGURA 4 FIGURA 5 FIGURA 6 FIGURA 7 FIGURA 8 FIGURA 9 FIGURA 10 FIGURA 11 FIGURA 12 FIGURA 13 FIGURA 14 FIGURA 15 FIGURA 16 FIGURA 17 FIGURA 18 FIGURA 19 FIGURA 20 FIGURA 21 FIGURA 22 FIGURA 23 FIGURA 24 FIGURA 25 FIGURA 26 FIGURA 27 FIGURA 28 FIGURA 29 FIGURA 30 FIGURA 31 FIGURA 32 - Arquitetura básica de um Web Service..................................................6 Exemplo simples de XML...................................................................11 Mensagem SOAP. ...............................................................................13 Exemplo de um documento WSDL. ...................................................15 UDDI relacionado à outros padrões. ...................................................16 Elementos do registro UDDI...............................................................17 Funcionamento de um Web Service. ...................................................18 Protocolos de comunicação de Web Services......................................18 Tabela dos produtos oferecidos por uma empresa. .............................30 Opção dos downloads das ferramentas. ..............................................31 Tela inicial do NetBeans IDE..............................................................33 Criando um novo projeto.....................................................................35 Criando o Web Service. .......................................................................36 Exemplo dos arquivos no Source Packages........................................37 Criação da mensagem Handler. ..........................................................37 Configuração da mensagem Handler no Web Service........................38 Registrando o Web Service..................................................................39 Testando a funcionalidade do serviço Web.........................................39 Parte de código Servlet desenvolvido. ................................................41 Código do arquivo JSP que é o portal de acesso para o cliente. .........42 Fragmento de código da página JSP desenvolvida. ............................44 Fragmento de código do arquivo ProdutosDAO.java .........................45 Parte do código do arquivo Conexao.java...........................................45 Fragmento de código do arquivo Produtos.java .................................45 Fragmento de código do arquivo Handler do serviço, chamado de PecasWSLogger.java...........................................................................46 Código do arquivo da implementação do serviço Web.......................47 Código completo do arquivo testeBdWsSEI.java...............................47 Conteúdo de um arquivo WAR...........................................................52 Arquitetura do serviço para publicação do Web Service.....................55 Interface da página desenvolvida para acesso das empresas.Erro! Indicador não Tabela apresentada pela página de manutenção dos produtos.Erro! Indicador não Interface de acesso para o cliente.........Erro! Indicador não definido. ix QUADRO 1 - Sintaxe da declaração de namespace. .................................................12 QUADRO 2 - Mapeamento entre termos WSDL e Java. ..........................................14 LISTA DE SIGLAS A-H API Axis B2B B2C DAO DTD EAR EJBs ESP-H HTML HTTP HTTPS IBM IDE IPSEC JAR J2SE J2EE J2ME JAX-RPC JSP PKI RMI SGML SJSAS SSL SOAP SQL UBR UDDI URL V.O. - Authentication Header - Application Programming Interface - Apache eXtensible Interaction System - Business-to-business - Business-to-consumer - Data Access Object - Documents Type Definition - Enterprise Archive - Enterprise JavaBeans - Encapsulating Security Payload Header - HyperText Markup Language - HyperText Transfer Protocol - HyperText Transfer Protocol Secure - International Business Machines Corporation - Integrated Development Enviroment - Internet Protocol Security - Java Archive - Java 2 Standard Edition - Java 2 Enterprise Edition - Java 2 Micro Edition - Java API for XML-based Remote Procedure Call - Java Server Page - Public Key Infrastructure - Remote Method Invocation - Standard Generalized Markup Language - Sun Java System Application Server - Secure Sockets Layer - Simple Object Access Protocol - Structured Query Language - UDDI business registry - Universal Description, Discovery, and Integration - Uniform Resource Locator - Value Object xi XKMS XML WAR W3C WS WSDL WS-Security - XLM Key Management Services - eXtensible Markup Language - Web Archive - World Wide Web Consortium - Web Service - Web Service Description Language - Web Service Security RESUMO Os Web Services vêm se destacando e conquistando seu espaço na Internet. Este recurso da Web permite a interoperabilidade de sistemas independente de tecnologia, plataforma, linguagem de programação ou hardware, o que justifica o seu uso para a integração de sistemas e serviços. Com o propósito de apresentar as características e funcionalidades desta tecnologia é que este trabalho foi desenvolvido. O mesmo apresenta os conceitos fundamentais de Web Services e uma proposta aplicada ao ecommerce. Além disto, o trabalho apresenta também a implementação de serviços Web através da linguagem de programação Java, envolvendo a J2SE e J2EE com os seus principais recursos aplicados a um estudo de caso. Neste contexto, novas facilidades para a implementação estão sendo disponibilizadas no mercado, é o caso da IDE NetBeans 4.1, que foi utilizada para o desenvolvimento da aplicação. Para fins de esclarecimentos e no intuito de explorar as principais funcionalidades desta IDE é demonstrado no trabalho como desenvolver serviços Web e quais são os principais arquivos de programas necessários para a implementação. Todo e qualquer serviço Web necessita ser disponibilizado em um servidor de aplicação, para isto foi utilizado o SJSAS 8.1 da empresa Sun Microsystems. Após a implementação do Web Service e de clientes que usam este recurso, obteve-se as considerações finais do trabalho, onde foi possível destacar os pontos favoráveis sobre Web Service e os recursos disponíveis para a implementação através da Java. A proposta apresentada por este trabalho poderá ser aplicada em diferentes setores de e-commerce, no sentido de facilitar e agilizar consultas referentes aos produtos oferecidos por empresas. Os principais objetivos propostos no trabalho foram concluídos e, assim sendo, teve-se um aproveitamento excelente do trabalho. Palavras-chave:Web Services; NetBeans; SJSAS; Java. ABSTRACT Web Services are calling the attention and conquering a good space in the Internet. This web's resource allows interoperability of systems that are independent of technology, operating system, programming language and hardware, these are the reasons that justify its use to integrate systems and services. The aim of this college work is to present the functionalities and profiles of this technology. It presents the basic concepts of Web Services and an applied proposal to e-commerce. It also shows the implementation of web services using Java programming language, involving J2SE and J2EE with its principals resources applied to a study case. In this context, new facilities are available in the market, like NetBeas 4.1 IDE, that was used to develop the application. Aiming the explanation and intending explore the main functionalities of this IDE, it’s demonstrated how to develop web services and what are the main program files that are necessary to the implementation. Every web service need to be available in an application server, that’s why it was used the SJSAS 8.1 from Sun Microsystems. After web service’s implemantation and clients that use this resource, it was possible to get the final considerations of this college work and enhance the favorable points about Web Service, and the available resources about implementation using Java. The proposal presented at this college work can be applied in different ecommerce’s sectors to provide a better search of the products that are offered for the companies. The principals objectives proposed in this college work were concluded thus being it was possible to have an excellent use to advantage of it. Keywords: Web Services; NetBeans; SJSAS; Java. 1 INTRODUÇÃO 1.1 Apresentação Atualmente, a rede mundial de computadores, também conhecida como Internet, vem crescendo e se desenvolvendo cada vez mais, sempre acumulando mais adeptos a essa tecnologia extraordinária. Ao longo deste vantajoso tempo de crescimento, são criadas mais opções e diversos recursos para o funcionamento de serviços e outras ferramentas disponíveis na Web. Ótimos exemplos que podem ser citados são: o comércio eletrônico ou e-commerce, as vídeo conferências e os noticiários on-line, que cada vez mais vem encontrando espaço nesta enorme rede. Um outro recurso recente e que também vem se destacando e conquistando seu espaço na Internet são os Web Services. Um serviço disponibilizado na Internet de forma que qualquer sistema possa ser capaz de acessá-lo, independente de linguagem de programação ou sistema operacional. É um serviço Web inovador e que vem sendo cada vez mais popular entre empresas que possuem relação com a Internet. Os Web Services permitem que aplicações tão heterogêneas quanto um celular e um carro executem interação e troquem serviços, ou seja, permitem que quaisquer tipos de aplicações cooperem facilmente e compartilhem informações e dados umas com as outras. Alguns exemplos da utilização de Web Services em aplicações são essencialmente em hotéis, bibliotecas, controle de passagens aéreas, bancos, previsão do tempo, entre outros exemplos. Diante deste atual serviço se propõe o desenvolvimento deste trabalho, com o intuito de demonstrar a implementação de serviços Web através da linguagem de 2 programação Java, bem como, fazer a publicação destes serviços na Internet. Juntamente com este capítulo introdutório, no decorrer do trabalho são descritos mais 5 capítulos. O capítulo 2 é apresentado um estudo sobre a definição do tema em questão. No capítulo 3 é descrita uma proposta de um Web Service para aplicações B2C (business-to-consumer). O capítulo 4 apresenta a implementação e o desenvolvimento do Web Service com o ambiente de programação Java. O capítulo 5 descreve a parte de publicação do serviço Web desenvolvido. Por fim, o capítulo 6 expõe as considerações finais do trabalho e algumas sugestões para possíveis desenvolvimento de trabalhos futuros. 1.2 Descrição do problema O desenvolvimento de um Web Service em Java envolve uma quantidade indispensável de conceitos e regras que podem dificultar o processo de implementação. Sendo assim, pode-se tornar o processo de estudo e desenvolvimento do serviço moroso e cansativo. Grande parte do material existente que trata do assunto é muito elementar e, na sua maior parte, mostram apenas pequenos exemplos, como um simples cálculo. Nem se quer tratam de um acesso a banco de dados, que é de suma importância para a maioria das aplicações. Outro problema, que também é um agravante, é a parte de publicação do serviço Web, a qual exige uma atenção por parte do encarregado do serviço. Pois, uma vez publicado o serviço Web, deve-se ater a algumas preocupações importantes como, por exemplo: a sua devida segurança e o que poderá se tornar público; o que deve ser privado; e os critérios utilizados para a publicação. 1.3 Justificativa O desenvolvimento de Web Services tem-se popularizado recentemente, visto as vantagens oferecidas por este recurso. Cada vez mais os serviços 3 desenvolvidos com a utilização de Web Services vêm se enriquecendo em recursos para Web, permitindo por exemplo, que os usuários interajam com preços de ações e produtos, previsões meteorológicas, grupos de discussão, horários de vôo, entre outras, tudo a partir de uma home page principal, podendo acessá-los de forma ubíqua. Conforme RAMIRES e RAMIRES (2004): Um Web Service representa uma função de negócio ou um serviço que pode ser acessado por uma outra aplicação, sobre redes públicas e, geralmente, disponibilizado por protocolos conhecidos. De maneira mais simples, podemos definir como um software com capacidade de se comunicar com pessoas, aplicações ou outros Web Services através de uma rede. O ambiente utilizado para o desenvolvimento do referido Web Service é o Java, visto as vantagens que a linguagem tem apresentado, não somente para o desenvolvimento de aplicações Web, mas também para qualquer tipo de aplicação e dispositivo que tenha capacidade de processamento, dando cada vez mais, suporte a interoperabilidade. A linguagem Java é gratuita e uma tendência na comunidade de desenvolvedores de aplicações para Web. Conforme VELOSO (2003), o porquê da utilização do ambiente Java dá-se de acordo com a frase “escreva um e rode em qualquer lugar”, é um bom motivo para começar a pensar em Java como sendo a plataforma de desenvolvimento de aplicações poderosas, diferenciadas, seguras e que funcionam em qualquer ambiente computacional. Por fim, quem desenvolve estes tipos de serviços deve se preocupar quanto à sua devida publicação, visto que se o serviço Web desenvolvido, não for publicado, não poderá ser utilizado por seus clientes. 1.4 Objetivo geral O objetivo principal do trabalho é demonstrar como desenvolver e publicar um Web Service utilizando o ambiente de programação Java e a IDE NetBeans 4.1, aplicado a um estudo de caso voltado ao B2C (business-to-consumer). 4 1.5 Objetivos específicos a) Apresentar os conceitos fundamentais de Web Service e suas aplicações; b) Demonstrar como desenvolver serviços Web utilizando o ambiente de programação Java; c) Desenvolver e publicar serviços Web através da IDE NetBeans 4.1 e do servidor de aplicações Sun Java System Application Server 8.1 (SJSAS). 1.6 Metodologia Inicialmente foi feito um levantamento bibliográfico e continuamente foi dado inicio ao desenvolvimento dos capítulos do trabalho a começar pela introdução, onde foram apresentados os problemas, objetivos e justificativas para o desenvolvimento do trabalho. Para o desenvolvimento de um Web Service é necessário possuir um conhecimento do assunto. Para isso foram realizadas pesquisas que auxiliaram para o conhecimento dos Web Services, juntamente com um estudo envolvendo os principais tópicos quanto à segurança dos serviços Web. O resultado deste estudo será o segundo capítulo do trabalho. Posteriormente, apresenta-se o estudo de caso referenciado ao trabalho e é desenvolvido o Web Services através da linguagem de programação Java. Isto exige o conhecimento da linguagem e de outras ferramentas necessárias para o desenvolvimento. No entanto, nesta etapa também serão estudadas: a linguagem Java, a IDE Netbeans 4.1, o servidor de aplicação SJSAS e outras. Isto tudo será relatado no capítulo quatro, juntamente com a apresentação dos códigos dos arquivos desenvolvidos. Tendo finalizado o desenvolvimento, foram estudados e definidos os passos essenciais para a publicação do serviço Web, ou seja, torná-lo público de modo que possa ser utilizado por qualquer ambiente de Web Services. Por fim, serão concluídas 5 as considerações finais do trabalho, para assim descrever as sugestões e propostas para trabalhos futuros com base neste projeto inicial. 2 WEB SERVICES Este capítulo tem como objetivo mostrar mais a fundo o que são, como funcionam e qual a importância dos Web Services. Também são destacados onde estes serviços podem ser aplicados, quais as respectivas vantagens e objetivos da utilização deles, a descrição dos componentes de sua estrutura e as principais tecnologias que envolvem a construção deste tipo de serviço e a devida segurança que pode ser aplicada aos serviços desenvolvidos. 2.1 Web Services Inicialmente, os Web Services são constituídos basicamente em dois participantes fundamentais para o seu correto funcionamento: o provedor do serviço ou servidor e o requisitante do serviço. Na figura 1 está demonstrada: a arquitetura básica de um Web Service, envolvendo estes dois elementos indispensáveis. Explicando melhor a figura 1, o requisitente (cliente ou consumidor) acessa o Web Service e o provedor ou servidor oferece a interface e a implementação do serviço. Os Web Services usam tecnologias programáveis e reutilizáveis que aproveitam a flexibilidade da Internet. FIGURA 1 - Arquitetura básica de um Web Service. 7 Segundo BATTISTI (2004), um Web Service é um componente ou unidade de software que fornece uma funcionalidade específica, através da utilização de padrões da Internet permitindo que diferentes sistemas possam acessar e trocar dados com um mesmo Web Service bastando para tanto apenas que este seja capaz de entender o protocolo SOAP e a arquitetura XML. Em outras palavras, um Web Service é um serviço (classes e métodos) disponibilizado na Internet de forma que qualquer sistema possa ser capaz de acessálo, independente de linguagem de programação ou sistema operacional. De acordo com TODD e SZOLKOWSKI (2003), os Web Services são tecnologias cada vez mais importantes, agora disponíveis para o desenvolvedor Java. Todos dos mais importantes fornecedores de tecnologia estão oferecendo suporte a Web Services. Uma forma simples de descrever o que são Web Services, de acordo com PEREZ (2004) é: “... Web Services nada mais são do que a maneira prática e eficaz de aplicativos se comunicarem via Internet. Surgiu por um consórcio de empresas lideradas pela Microsoft e IBM, e hoje se tornou um padrão do W3C (World Wide Web Consortium)”. Ainda conforme PEREZ (2004), os Web Services servem praticamente para quase tudo no que se possa pensar em troca de dados e informações. Como eles são baseados no protocolo SOAP, qualquer plataforma que interprete rotinas HTTP e manipule XML pode utilizar os dados dos Web Service sem qualquer problema. Os Web Services não são elementos visuais, eles consistem em interfaces programadas, ou seja, os Web Services podem alimentar dados para páginas espalhadas na Web. 2.1.1 Importância dos Web Services. Os Web Services são muito importantes para empresas que têm a visão e a proposta de crescimento no mercado, pois com a implantação deste tipo de serviço, a empresa, terá uma enorme probabilidade de conquistar um diferencial perante seus concorrentes, e principalmente um atrativo para novos clientes. Estes serviços são 8 úteis tanto para B2B quanto para B2C. Deste modo, as companhias podem automatizar muitas operações comerciais, criando novas capacidades operacionais e modos mais eficientes de realizar negócios. Segundo COSTA (2002), apesar de novo, os Web Services já foram adotados por muitas empresas, pois eles oferecem soluções para vários dilemas dos desenvolvedores de sistemas. A universalidade dos Web Service já citada, que propõem a exposição de transações e regras de negócios por meio de protocolos e que podem ser acessados e entendidos por qualquer linguagem de programação, em qualquer sistema operacional, rodando em qualquer dispositivo, já havia sido atingida com as páginas da Web. Todos os sites se comportam e possuem mais ou menos a mesma maneira e aparência, independentemente do tipo de computador, sistema operacional ou browser utilizado para acessá-lo. Os protocolos da Web revolucionaram a maneira como as pessoas se relacionam com a tecnologia. Por mais estranho que pareça, hoje é mais fácil uma pessoa se entender com sistemas nos computadores do que fazer dois sistemas se entenderem entre si. Esse paradoxo acontece porque a acirrada competição entre as empresas de tecnologia impediu que elas desenvolvessem padrões comuns de comunicação. 2.2 Objetivos e vantagens da utilização De acordo com BATTISTI (2004), os Web Services tem como objetivo principal possibilitar aos desenvolvedores uma maneira fácil para integrar aplicações e dados de diferentes plataformas. Com Web Services somos capazes de integrar aplicações criadas em diferentes plataformas e em diferentes linguagens. Os Web Services são baseados em padrões abertos (XML, SOAP, HTTP etc.), padrões estes amplamente utilizados atualmente. Ao invés de um método binário para comunicação entre aplicações, os Web Services utilizam um mecanismo de comunicação baseado em XML. O XML por sua vez passa a ser então uma espécie de linguagem universal para troca de dados e mensagens entre aplicações, permitindo assim, a 9 interoperabilidade entre sistemas. Juntamente com seus objetivos, os Web Services oferecem muitas vantagens para a empresa que adotar este serviço. Dentre elas, segundo FERNANDES, VALENTE e FERNANDES (2005), destacam-se as três seguintes vantagens: • Acelera a ida ao mercado - Web Services possibilita aos desenvolvedores rapidamente integrar informações e funcionalidades a partir de uma gama de fontes internas (aplicações enterpise, banco de dados etc.) e fontes externas (processos de partners, aplicações de câmbio, conteúdo Web, entre outros). • Reduz custos - Automatizando a interação entre aplicações B2C, reduz os custos de transações e minimiza o erro humano. Além disso, Web Services são componentes reutilizáveis que possibilitam aos desenvolvedores facilmente melhorar funcionalidades e conteúdos existentes, reduzindo o custo de desenvolvimento. • Gera novas oportunidades de negócio - publicando funcionalidades existentes em aplicações como Web Services pode-se gerar demanda diretamente (serviços de cotação online) ou indiretamente (provendo serviços de rastreamento de pedidos de compra). Além disto, uma vantagem mais técnica sobre o serviço, segundo PEREZ (2004), é que nos Web Services, os dados são trafegados em formato XML. Assim, todos os dados possuem <tags> e isso faz com que estes dados tenham consistência, sem falhas, permitindo a troca de dados mais robustos como Arrays, e por trafegar em XML ele é multi-plataforma. 2.3 Componentes da estrutura dos Web Services Indispensável para o funcionamento e para completar um desenvolvimento de um serviço Web, é extremamente necessária a utilização de alguns padrões. A estruturação do serviço deve-se principalmente aos padrões citados nesta seção. 10 • XML • SOAP • WSDL • UDDI 2.3.1 eXtensible Markup Language O eXtensible Markup Language (XML) conforme escrito por HORSTMANN (2004), permite codificar dados complexos, independentemente da linguagem de programação, de forma que o destinatário possa fazer a análise sintática facilmente. É notavel que o formato XML de dados lembra um pouco o código HTML. Tanto em XML quanto em HTML, as marcas são incluídas entre sinais de menor que e maior que: < ... >. Ainda de acordo com HORSTMANN (2004), essa semelhança não é por acaso. Tanto a HTML como a XLM são descendentes da Standard Generalized Markup Language (SGML), que foi desenvolvida nos anos 70 para especificar conjuntos de regras de estruturação para diferentes documentos e criar documentos que se ajustam a esses conjuntos de regras. Em 1996, o W3C iniciou discussões sobre o uso da SGML na Web. O resultado foi a XML, uma versão significamente simplificada da SGML. Uma razão para a simplicidade da especificação XML é sua forma escrita, ou seja, em XML, deve-se prestar atenção à distinção entre letras maiúsculas e minúsculas das marcas, cada marca inicial deve ter uma marca final correspondente e por fim os valores de atributos devem aparecer entre aspas duplas. A XML possibilita que os desenvolvedores Web descrevam suas próprias tags, superando assim as limitações impostas pela linguagem HTML. O XML também é ideal para comunicação entre redes heterogêneas, porque suas propriedades baseadas em texto, fazem com que ele seja independente de plataformas. XML não é uma linguagem de programação. Na figura 2 apresenta-se um exemplo de um documento XML simples que representa um curso e dois alunos com a sua média escolar. 11 A tag curso contém a tag aluno que, por sua vez, armazena as tags nome com seus respectivos conteúdos. FIGURA 2 - Exemplo simples de XML. Nota-se que as tags que foram usadas indicam a estrutura e o conteúdo armazenado. Uma outra grande diferença entre XML e HTML é que as tags XML são extensíveis, permitindo que documentos XML possam representar fielmente os dados por ele armazenados. Já o HTML possui um conjunto de tags pré-definidas e fixas, não permitindo adicionar novas. Cada tag do documento XML é chamado de elemento. Dessa forma, têm-se vários elementos no XML mostrado no exemplo: curso, aluno, nome e média. Como existem elementos que estão localizados dentro de outros elementos, pode-se dizer que são sub-elementos. Aluno é um sub-elemento de curso, já nome e média são subelementos de aluno. 2.3.1.1 Namespaces De acordo com RAY (2001), um namespaces é um grupo de nomes de elementos e atributos. Os namespaces não são úteis apenas para impedir conflitos de nome. Geralmente, eles ajudam o processador XML a distinguir diferentes grupos de elementos para tratamentos. Um exemplo da utilização de namespaces esta contida na figura 4, que será descrita posteriormente em seu tópico específico. Também pode ser citada, a sintaxe da declaração de namespace, como mostra o quadro 1. Começa-se com a palavrachave xmlns para alterar o analisador XML de que esse atributo é uma declaração de namespaces. Isso é seguido por um sinal de dois pontos, depois um prefixo de 12 namespaces, um sinal de igual e, finalmente um URL entre aspas ou apóstrofos. QUADRO 1 - Sintaxe da declaração de namespace. xmlns : nome = “url” Os namespaces, no caso de documentos WSDL, são definidos no interior do documento, pois cada WSDL é um documento XML. 2.3.2 Simple Object Access Protocol Embora a XML seja feita para a troca de dados, ela sozinha não é suficiente para o intercâmbio de informações através da Web. É necessário ter um protocolo que possa enviar e receber mensagens contendo documentos XML. É neste ponto que entra o Simple Object Access Protocol (SOAP). Então, SOAP é um protocolo de comunicação, baseado em XML, para comunicação, envio e troca de dados entre aplicações distintas. Possibilita que qualquer aplicação invoque e responda a qualquer outra aplicação. Justamente, o que garante a interoperabilidade dos Web Services é o uso deste protocolo padrão para o envio e recebimento destas mensagens. Segundo HENDRICKS et al. (2002), uma mensagem SOAP é um documento XML quem pode conter, no máximo, três partes: o envelope SOAP (obrigatório), o cabeçalho SOAP (opcional) e o corpo SOAP (obrigatório). Estas partes da mensagem estão respectivamente descritas abaixo e relacionadas na figura 3: • O envelope SOAP é o elemento que se localiza no topo da hierarquia da mensagem SOAP e é responsável pela identificação da mesma. • O cabeçalho SOAP é uma maneira flexível e geral de adicionar recursos como autenticação, gerenciamento de transações e serviços de pagamento a uma mensagem SOAP. • O corpo SOAP é a parte principal da mensagem, e contém a carga útil, ou seja, as informações de chamada e resposta. 13 FIGURA 3 - Mensagem SOAP. 2.3.2.1 Mensagem SOAP com anexos Ainda, conforme HENDRICKS et al. (2002), uma especificação importante que convém mencionar é a especificação SOAP Message with Attachments (Mensagem SOAP com anexos). Essa especificação define e permite um mecanismo para o envio de um ou mais anexos na mensagem SOAP. 2.3.3 Web Service Description Language A Web Service Description Language (WSDL) trata-se de uma linguagem de definição de interface, baseada em XML, a qual possibilita a descrição das funcionalidades, métodos e atributos disponibilizados pelos Web Services. Todo Web Service tem o seu WSDL, que inicialmente foi definida em um esforço conjunto da IBM, Microsoft e Ariba, tendo sido submetida à empresa W3C, para padronização. Ele define os serviços como um conjunto de endpoints, isto é, pontos de acesso na rede. Os elementos contidos na estrutura de um documento WSDL são: • definitions: é o elemento raiz de cada documento WSDL e que contém tipicamente atributos definindo os namespaces usados no documento. • types: um container para definição de tipos de dados usados; • message: define os tipos de mensagem que são passadas nas operações, ou seja, que serão usadas pelo serviço; • operation: descrição de uma ação (solicitação-resposta) disponibilizada individualmente por um serviço; 14 • port Type: encapsula um conjunto de operações (operations); • binding: especificação do formato dos dados para um determinado portType, é mais complexo do que os elementos anteriores, pois possui um certo grau de liberdade quanto ao que pode ser incluído nele; • Port e Service: incluem a localização da implementação de um serviço na rede. A figura 4 é um exemplo de um documento WSDL, o qual foi desenvolvido pelo NetBeans durante a minha implementação do serviço Web. Neste documento citado pode-se encontrar todos os elementos da estrutura WSDL, já descritos acima. 2.3.3.1 WSDL e Java De acordo com o HENDRICKS et al. (2002), um documento WSDL descreve a interface de um serviço Web e concentrando a atenção no uso do Java, pode-se tentar mapear os termos que são usados no WSDL para o ambiente Java. No quadro 2 é demonstrado este mapeamento, mas observe que não é padronizado sob nenhum aspecto, servindo apenas como uma diretriz auxiliar para o entendimento desta basilar comparação. QUADRO 2 - Mapeamento entre termos WSDL e Java. Termo WSDL Termo Java <types> Classe <message> Parâmetros do método ou valor de retorno <operation> Método <portTypes> Classe 15 FIGURA 4 - Exemplo de um documento WSDL. 2.3.4 Universal Description, Discovery, and Integration Após a definição dos dados das mensagens com a XML, da descrição dos serviços que receberão e processarão as mensagens através do WSDL e das formas de envio e recebimento das mensagens pelo SOAP, tem-se a necessidade de divulgar ou publicar o serviço oferecido e também de encontrar os serviços fornecidos por outros Web Services que podem ser úteis. É esta a função do Universal Description, Discovery, and Integration (UDDI). O aplicativo que irá utilizar um Web Service necessita identificar ou 16 descobrir a existência do mesmo. O UDDI define uma maneira padrão de os Web Services publicarem informações e anunciarem seus serviços. Ele é basicamente um diretório de Web Services que oferece às empresas uma maneira fácil de registrar e localizar serviços. A figura 5 mostra a posição do UDDI em uma pilha onde se encontram os demais padrões e tecnologias da Web. FIGURA 5 - UDDI relacionado à outros padrões. Um ponto importantíssimo que deve ser destacado é a estruturação dos dados em um registro UDDI. Esta estruturação é subdividida três categorias: as páginas brancas ou white pages, as páginas amarelas ou yellow pages e as páginas verdes ou green pages, respectivamente descritas abaixo: • White pages: Incluem informações sobre uma empresa específica, como por exemplo, nome de um negócio, descrição do negócio, informação de contato, endereço, números de telefone, fax, ou mesmo incluir identificadores de negócios (business identifiers). • Yellow pages: Incluem dados de classificação geral para qualquer empresa ou serviço oferecido. Por exemplo, esses dados podem incluir a indústria, o produto, ou códigos geográficos. • Green pages: Esta categoria contém informação técnica sobre um serviço na Web (Web Service). Geralmente, essa informação inclui um apontador (ponteiro) para uma especificação externa e um endereço 17 para invocar o serviço. De acordo com a figura 6 apresentada por SIQUEIRA (2000) e também conforme ANDRADE (2004), mostra que o registro UDDI possui quatro tipos de dados principais: o businessEntity que contém informações relativas à entidade que publica informações sobre uma família de serviços; o businessServiçe contém informações descritivas sobre um serviço particular; o bindingTemplate que contém informações técnicas sobre um serviço e especificações relativas a sua construção; e por fim o tModel que contém descrições e especificações para serviços ou taxonomias. Na verdade, tModels são utilizados como interfaces que são implementadas por bindingTemplates. FIGURA 6 - Elementos do registro UDDI. 2.4 Funcionamento dos Web Services Estando a par da importância, objetivos e vantagens dos Web Services, juntamente com os componentes da sua estrutura, apresenta-se agora basicamente o funcionamento do serviço em questão. Esta funcionalidade e mais algumas informações e tópicos referentes ao funcionemento dos Web Services poderá ser também observado no capítulo 5 deste trabalho. Inicialmente, o provedor de serviço deve registrar seus serviços junto a um 18 registro UDDI. Para que o cliente possa acessar um serviço Web é necessário efetuar uma pesquisa do mesmo no registro UDDI. O cliente então obtém uma descrição dos vários métodos e tipos de parâmetro do provedor de serviço na forma de WSDL. Por fim, o cliente invoca o Web Services utilizando SOAP e o serviço envia uma resposta SOAP de volta para o cliente, conforme representado na figura 7. FIGURA 7 - Funcionamento de um Web Service. A integração dos Web Services se dá sob vários protocolos abertos, em diferentes níveis de abstração. Os protocolos utilizados para realizar esta comunicação entre diferentes agentes estão dispostos em cinco camadas, conforme apresentado na figura 8. FIGURA 8 - Protocolos de comunicação de Web Services. 19 2.5 Ferramentas e padrões para o desenvolvimento de Web Service Para trabalhar com desenvolvimento de serviços Web, existem algumas plataformas que disponibilizam todos os recursos necessários para a implementação dos mesmos, ou seja, cada ambiente dá suporte suficiente para manipulação dos padrões WSDL, XML, SOAP e UDDI, vistos anteriormente. Além da plataforma Java, existem outros vários tipos de ambientes para a implementação de Web Services, os principais são as plataformas, Microsoft .Net e IBM Web Sphere, entre outras. 2.5.1 Principais ferramentas de desenvolvimento Java Uma das ferramentas existentes para o desenvolvimento de aplicações Java é o JCreator, que é uma IDE fácil e eficaz. O JCreator apresenta vários recursos que facilitam o trabalho de desenvolvimento. Seu pequeno tamanho e leveza na carga e execução, bem como a simplicidade no manuseio, ajudam a superar limitações em comparação com outras IDEs mais sofisticadas. Dois exemplos de IDEs mais sofisticadas e com mais recursos são o Eclipse e o NetBeans. O Eclipse é uma interface totalmente customizável, rápido e grátis. Possui uma gama enorme de plugins muito úteis. Features1 muito interessantes como por exemplo, debugar páginas JSP rodando no servidor TomCat. O NetBeans por sua vez é um software muito completo, consistindo em um IDE profissional cheio de recursos e uma plataforma sobre a qual pode-se desenvolver qualquer tipo de aplicação. Neste trabalho é utilizada a versão 4.1 do NetBeans. Além de todos os recursos já oferecidos em versões anteriores, a versão 4.1 desta ferramenta já possui suporte a Web Services podendo ser trabalhado e desenvolvido facilmente também este tipo de serviço. Conforme SILVA (2005), a IDE NetBeans é um conjunto de bibliotecas, módulos e APIs, formando um ambiente integrado de desenvolvimento visual 1 Features ou características de interface são partes detectáveis, locais da interface com algum significado. 20 possibilitando ao desenvolvedor compilar, depurar e efetuar deploying de suas aplicações . Além dos ambientes citados, existem outros ambientes para o desenvolvimento de Web Services como, por exemplo, o Visual MSJ, Borland JBuilder e o Sun One. Estes, por sinal, também são ferramentas poderosas, porém, são pagas e, neste trabalho optou-se pela utilização do NetBeans, pelo fato de ser uma ferramenta gratuita. 2.5.2 Linguagem Java Java é uma das linguagens de desenvolvimento de softwares mais populares atualmente. É orientada a objetos e está na sua versão J2EE 5.0. De acordo com DEITEL e DEITEL (2003), Java cresceu tão rapidamente durante os últimos anos que ela agora tem duas outras edições: • A Java 2 Platform Enterprise Edition (J2EE) é voltada para o desenvolvimento de aplicações de grande porte, distribuídas em redes e aplicações baseadas na Web. • A Java 2 Platform Micro Edition (J2ME) é voltada ao desenvolvimento de aplicações para dispositivos pequenos (como telefones celulares, pagers e assistentes pessoais digitais) e outras aplicações com restrições de memória. Ainda, para DEITEL e DEITEL (2003), os sistemas Java geralmente consistem em várias partes: o ambiente, a linguagem, a Java Application Programming Interface (API) e várias bibliotecas de classes. Já os programas Java consistem em partes chamadas classes. As classes consistem em partes chamadas métodos que realizam tarefas e retornam informações quando elas completam suas tarefas. Além de normalmente passarem por cinco fases para serem executadas: edição, compilação, carga, verificação e execução. A maioria das linguagens de alto nível geralmente permitem que o programador escreva programas que realizam apenas uma atividade por vez. Java, por meio de uma técnica chamada multithreading, permite que os programadores 21 escrevam programas com atividades paralelas. Numa linguagem mais usual, conforme publicado no site do Tribunal Superior Eleitoral em 2002, o programa em Java é compilado para o chamado bytecode, que é próximo às instruções de máquina, mas não de uma máquina real. O bytecode é um código de uma máquina virtual idealizada pelos criadores da linguagem. Por isso, Java pode ser mais rápida do que se fosse simplesmente interpretada. Java foi criada para ser portável. O byte-code gerado pelo compilador para a sua aplicação específica pode ser transportado entre plataformas distintas que suportam Java (Solaris, Windows, Mac/Os, entre outros). Não é necessário recompilar um programa para que ele rode numa máquina e sistema diferente, ao contrário do que acontece, por exemplo, com programas escritos em C e outras linguagens. Esta portabilidade é importante para a criação de aplicações para a heterogênea Internet. Em Java um inteiro, por exemplo, tem sempre 32 bits, independentemente da arquitetura. O próprio compilador Java é escrito em Java, de modo que ele é portável para qualquer sistema que possua o interpretador de bytecodes. 2.5.3 Servlets A tecnologia Servlets é a base do desenvolvimento de aplicativos Web usando a linguagem de programação Java. Conforme apresentado por COLLA (2005), Servlets são escritos em Java, uma linguagem projetada para ser independente de plataforma. Desta forma, é possível escrever um Servlet para um servidor UNIX, que poderá ser instalado em um Window NT, sem a necessidade de ser rescrito o código, ou recompilá-lo. Ainda, segundo COLLA (2005), o Servlet é carregado uma única vez na memória, e permanece lá até seja necessário modificá-lo. Normalmente, é necessário reiniciar o servidor toda vez que um Servlet sofre alguma modificação, no entanto, atualmente alguns sistemas que executam Servlets são capazes de recarregá-los sem a necessidade da reinicialização do servidor, este é o caso da ferramenta utilizada. Como os Servlets permanecem carregados na memória, é mais fácil desenvolver aplicações 22 que exijam persistência entre conexões sucessivas de um mesmo cliente. Conforme KURNIAWAN (2002), Servlet e JSP oferecem os seguintes benefícios, que não estão necessáriamente disponíveis em outras tecnologias: desempenho; portabilidade; rápido ciclo de desenvolvimento; robustez e aceitação difundida. Basicamente a diferença mais simples entre a tecnologia Servlet e JSP é que os Servlet são códigos HTML em cima de códigos Java e JSP seriam códigos Java em cima de HTML. 2.5.4 JavaServer Pages Segundo KURNIAWAN (2002), JavaServer Pages (JSP) é uma outra tecnologia Java para desenvolver aplicativos Web. JSP foi lançada quando a tecnologia de Servlet tinha atingido popularidade como uma das melhores tecnologias disponíveis. JSP, porém, não se destina a substituir Servlet. Na verdade, JSP é uma extensão da tecnologia de Servlet e é prática comum usar ambas, Servlets e páginas JSP, nos mesmos aplicativos Web. O funcionamento do JSP, de acordo com KURNIAWAN (2002), dentro do contentor JSP há um Servlets especial chamado page compiler. O contentor de Servlets é configurado para encaminhar a esse compilador de página, todas as solicitações HTTP com URLs que combinam as extensões de arquivos JSP. Esse compilador de página transforma um contentor Servlet em um contentor JSP. Quando uma página JSP é chamada inicialmente, o compilador de página analisa e compila a página JSP em uma classe Servlet. Se o compilador é bem sucedido, a classe Servlet JSP é carregada na memória. Em chamadas subseqüentes, a classe Servlet daquela página JSP já esta na memória, entretanto, ela deve estar atualizada. Portanto, o compilador de página Servlet sempre comparará o carimbo de horário no Servlet com a página JSP. Se a página JSP for mais atual, é necessária a recompilação. Com esse processo, uma vez distribuídas, as páginas JSP só percorrem o processo de compilação que demanda tempo, uma vez. Para utilizar a tecnologia JavaServer Pages a fim de produzir conteúdo 23 dinâmico da Web, é necessário um servidor que esteja integrado a um contêiner de JSP. Existem vários contêineres e JSP disponíveis, tais como o Apache TomCat, o SJSAS, entre outros. Uma vez instalado e configurado o servidor, basta começar o desenvolvimento de páginas JSP, conforme será mostrado no tópico a seguir. 2.5.5 Sun Java System Application Server Platform Edition 8.1 O Sun Java System Application Server Platform Edition 8.1 (SJSAS) é um servidor desenvolvido pela Sun. Conforme apresentado no site da Sun, e também postado no site TheServerSide.com por SHARPLES (2005), o Sun Java System Application Server Platform Edition 8.1 possui como características principais: performance intensificada do seu funcionamento, uma maior segurança quanto à aplicações de Web Services, Admin Console GUI Enhancements, suporte a JavaServer Faces 1.1 e JavaServer Pages Standard Tag Library 1.1 e suporte à atual versão J2SE 5.0 do Java. Conforme KEEGAN et al. (2005), o servidor SJSAS é considerado o mais conveniente para quem quer começar a desenvolver e fazer deploying de aplicações Web. E também, o servidor fornece uma facilidade para automaticamente gerar tabelas e manusear um banco de dados corrente. 2.5.6 Apache TomCat 5.5.7 Server O servidor TomCat está atualmente em sua versão 5.5.7 e, de acordo com D´Ávila (2005), o TomCat é um servidor de aplicações Java para Web. É software livre e de código aberto, desenvolvido dentro do projeto Apache Jakarta e oficialmente endossado pela Sun como a Implementação de Referência (RI) para as tecnologias Java Servlet e JavaServer Pages (JSP). O TomCat é robusto e eficiente o suficiente para ser utilizado mesmo em um ambiente de produção. 2.5.7 Apache eXtensible Interaction System O Apache eXtensible Interaction System (AXIS), é um framework que 24 permite a construção de clientes e servidores de Web Services utilizando protocolo SOAP. AXIS implementa a API JAX-RPC (Java API for XML-based Remote Procedure Call), que permite, como o próprio nome já diz, a chamada de métodos remotos por meio de arquivos XML. Algumas características básicas e vantagens do AXIS são quanto a velocidade, flexibilidade, organização orientada a componentes e framework de transporte. 2.6 Segurança Quando é planejada uma aplicação de Web Service, com seu respectivo desenvolvimento, publicação e implantação, a preocupação com a segurança desperta especial atenção. Pela grande diversidade de sistemas que compõem atualmente os vários ambientes do ramo da informática, é necessário que haja uma abordagem cuidadosa quanto à questão de segurança em Web Services. Na medida em que cresce o uso de Web Services entre empresas que adotam diferentes modelos de segurança em suas colaborações, as especificações de segurança e confiabilidade propostas devem oferecer um modelo flexível, que permita a essas empresas se interconectarem de forma confiável. Segundo HENDRICKS et al. (2005), a segurança é um dos problemas mais importantes a serem considerados, sempre que for necessário realizar alguma transação comercial. Sempre que você apresentar uma nova tecnologia a uma empresa, uma das áreas de maior interesse será a segurança. Sem um sólido modelo de segurança na sua aplicação ou tecnologia, ela não será aceita por nenhum negócio destinado a realizar transações na Internet. O mesmo se aplica a serviços Web. Como já visto, os Web Services utilizam o protocolo SOAP em sua comunicação, o qual é baseado em XML, ou seja, um arquivo texto perfeitamente legível. Para tornar um Web Service seguro deve-se encriptar (codificar), a comunicação. Segundo PERPÉTUO JÚNIOR e JAGIELLO (2003), existem duas abordagens para se fazer isso: garantir a segurança ao nível de transporte e ao nível de XML. Cada abordagem possui diferentes intensidades e deficiências, que serão 25 descritas a seguir. A escolha da abordagem depende muito das características da arquitetura e das plataformas envolvidas na troca de mensagens. 2.6.1 Segurança ao nível de transporte Segurança ao nível de transporte, de acordo com PERPÉTUO JÚNIOR e JAGIELLO (2003), significa proteger o protocolo de rede que o Web Service utiliza para se comunicar. Nesta parte da segurança dos Web Services existem várias maneiras para a utilização no serviço. Serão referenciados os modelos SSL, PKI e IPsec na seqüência do trabalho. O Secure Sockets Layer (SSL) é um protocolo padrão para encriptar comunicações sobre TCP/IP. Neste modelo, um cliente abre um socket seguro para um Web Service e então o utiliza para trocar mensagens SOAP via HTTPS. A implementação de SSL garante segurança encriptando todo o tráfego de rede sobre o socket. Utilizando SSL pode-se também autenticar um Web Service para um cliente utilizando um Certificado Digital através da Infra-estrutura de Chaves Públicas (PKI). A Infra-estrutura de Chaves Públicas ou Public Key Infrastructure (PKI) garante a segurança de comércio eletrônico e de comunicações na Internet através dos seguintes elementos: • Autenticação • Encriptação • Não Repúdio • Certificados Digitais • Entidade Certificadora O IPSec tem o intuito de desenvolver uma arquitetura de segurança para o protocolo IP, integrando mecanismos de autenticação, gestão e distribuição de chaves que podem ser usados com qualquer das versões do protocolo IP. Através dos seus componentes, a IPSec usa este conceito para permitir a implementação de redes virtuais privadas e seguras através de redes públicas, tais como a Internet. O IPSec utiliza como mecanismos de autenticação dois cabeçalhos de extensão específicos do protocolo IPv6: o cabeçalho de Autenticação ou 26 Authentication Header (A-H) e o cabeçalho de encapsulamento de dados de segurança ou Encapsulating Security Payload Header (ESP-H). 2.6.2 Segurança ao nível de XML Por sua vez, segurança ao nível de XML, conforme PERPÉTUO JÚNIOR e JAGIELLO (2003), é baseado na criptografia, envolvendo a encriptação e decriptação de documentos XML. O World Wide Web Consortium (W3C), o qual mantém o padrão XML, tem criado grupos de trabalhos para definir padrões para segurança em XML, incluindo assinaturas digitais, encriptação e gerenciamento de chaves para XML. Neste nível de segurança dos serviços Web existem duas especificações que serão apresentadas posteriormente para fins de conhecimento da existência destes modelos. São eles: a XML Key Management Services (XKMS) e a WS-Security. A XKMS estabelece um formato de documento em XML que permite que a autenticação de chaves e gerenciamento de certificados sejam feitos em aplicações Web. A XKMS permite também um nível mais profundo de interoperabilidade entre sistemas de PKI, ao mesmo tempo em que permite uma integração mais fácil entre as aplicações da empresa e a infra-estrutura de chaves públicas corporativa. O WS-Security suporta, integra e unifica vários modelos, mecanismos e tecnologias de segurança em uso no mercado, permitindo que vários sistemas possam interoperar em plataformas e linguagens neutras. Ele oferece os mecanismos padrão de segurança necessários para realizar o intercâmbio seguro de mensagens certificadas em um ambiente de Web Services. 2.7 Conclusão Com este capítulo pode-se concluir que pelo uso de Web Services é possível ter uma infinidade de aplicativos conectados em rede, mesmo rodando em plataformas diferentes, fornecendo informações à todos os seus clientes, parceiros e funcionários. Promove um significativo ganho de produtividade à medida que permitem que 27 sistemas possam se integrar ao ambiente Web, disponibilizando lá informações antes restritas ao seu antigo ambiente de operação. São inúmeras as possibilidades que se vislumbram com a utilização de Web Services. Outro tópico essencial para a importância deste capítulo perante o trabalho em questão é a parte de segurança dos Web Services, dividida e abordada em duas partes: segurança ao nível de transporte e ao nível de XML. Consecutivamente este capítulo tem suma importância sobre os demais, pois é essencial conhecer e entender basicamente a parte teórica do assunto antes de iniciar a parte de desenvolvimento do Web Services, a qual será abordada nos próximos capítulos. 28 3 IMPLEMENTAÇÃO DO WEB SERVICE Neste capítulo é descrita a proposta de implementação em um estudo de caso do sistema e são abordadas as ferramentas e ambientes utilizados para o desenvolvimento do serviço Web proposto, assim como a parte de implementação do Web Services, descrevendo basicamente passo a passo o processo de desenvolvimento do serviço e do cliente. É feita uma abordagem sobre os arquivos Servlets e JSPs criados para a atualização e manutenção da tabela dos produtos no banco de dados, juntamente com a descrição completa dos arquivos utilizados no NetBeans. Por fim, é exposto um estudo sobre os arquivos JARs, WARs e EARs. 3.1 Proposta da implementação Para um entendimento mais aperfeiçoado do sistema e da parte prática em geral, é descrito o estudo de caso, que abordara diretamente o funcionamento do sistema desenvolvido. 3.1.1 Estudo de caso Considerando que ter um computador hoje não é mais um luxo e sim uma necessidade, o ramo da informática no dia a dia, vem se popularizando cada vez mais. Com toda essa popularização, torna-se comum também o crescimento do mercado de computadores, principalmente para vendas dos equipamentos em geral. Com este mercado, é gerada uma grande concorrência entre as empresas do ramo, da qual o consumidor pode tirar proveito e adquirir o melhor produto com o preço mais acessível. 29 As empresas que atuam neste comércio devem se preocupar, em razão principalmente da grande concorrência existente nesta área e, em possuir um diferencial perante aos seus clientes, para que assim consigam se destacar no mercado, conquistando a confiança de mais clientes e conseqüentemente obtendo um maior lucro. Pode ser citado como diferenciais para aceitação na empresa: ter um preço competitivo, assistência técnica avançada, um ótimo atendimento, uma boa qualidade e procedência nos equipamentos vendidos, um bom marketing e, imprescindivelmente, terá que possuir um site na Internet, visto que grande parte dos negócios concluídos atualmente, são realizados pela Internet. O estudo de caso terá a Internet como principal meio de transmissão das informações e também o acesso ao serviço Web disponibilizado nos servidores das empresas. Então, o funcionamento do sistema será baseado nisto, as empresas que implantarem em seus servidores estes Web Services desenvolvidos, os mesmos estarão disponíveis para o acesso de seus clientes. Este acesso será realizado através de um portal disponível na Internet, ou seja, o cliente irá acessar este portal, onde lá estarão disponíveis para sua escolha, grande parte dos equipamentos de informática proveniente das empresas cadastradas com o serviço. Feita a escolha dos produtos de interesse ou necessidade do cliente, o portal através destes parâmetros fará a busca no serviço Web disponível nos servidores das empresas o valor de cada produto informado e retornará o resultado de sua consulta. Resultado este que deverá conter o nome, a marca e a especificação dos produtos escolhidos, sua respectiva imagem ilustrativa (caso tenha), a quantidade disponível em estoque e o principal, serão apresentados também, os valores de cada produto. O Web Service conta com uma consulta a banco de dados (com base em parâmetros), e a respectiva devolução dos resultados da pesquisa feita pelo cliente. A tabela dos dados disponibilizada no serviço e usada especialmente pelas empresas é mostrada na figura 9. Esta tabela será atualizada periodicamente por cada empresa responsável. Entre as alterações possíveis e necessárias consta o cadastramento de 30 novos produtos ou peças, a alteração e atualização dos mesmos, seus valores, entre outras características. FIGURA 9 - Tabela dos produtos oferecidos por uma empresa. A tabela possui sete campos para que as empresas especifiquem os produtos a serem cadastrados. Respectivamente estes campos são: o ID ou código do produto, o seu nome, sua marca, a descrição ou característica principal, a quantidade do produto presente no estoque da empresa, a sua situação ou disponibilidade, o seu valor e por fim, terá de ser informado as condições para o pagamento dos produtos escolhidos pelos clientes. Concluindo o estudo de caso, esta tabela é de suma importância para o serviço, pois sua manipulação terá de ser feita periodicamente pela empresa responsável das informações contidas nela, partindo do princípio que, quando houver alguma negociação com clientes ou alterações de preços, a tabela deverá ser imediatamente atualizada. 31 3.2 Ferramentas e ambientes utilizados para o desenvolvimento de Web Services com Java Para o desenvolvimento do serviço Web é utilizado o ambiente de programação NetBeans, encontrado gratuitamente em http://www.netbeans.org. Como já visto, ele é constituído em um IDE profissional com muitos recursos, fornecendo suporte a todos os tipos de aplicações Java e, na sua versão 4.1 existe um diferencial que facilita o desenvolvimento de aplicações para Web. Juntamente com esta IDE é utilizado o Sun Java System Application Server Plataform Edition 8.1 (SJSAS) como servidor de aplicação. 3.2.1 Downloads e instalação das ferramentas Para o desenvolvimento de Web Services em Java utilizando o NetBeans 4.1, deve-se fazer inicialmente os downloads das ferramentas a serem utilizadas. Elas podem ser baixadas da Internet no site oficial do fabricante. No site, na parte de downloads, após selecionar o sistema operacional utilizado para a instalação dos ambientes, como mostra a figura 10, é encontrados na segunda opção os setups para instalação do NetBeans IDE versão 4.1 e do servidor de aplicações Java para Web, o SJSAS 8.1. FIGURA 10 - Opção dos downloads das ferramentas. Após serem baixadas o próximo passo é instalar as ferramentas, e ao instalar o SJSAS 8.1 deve-se observar a senha que será solicitada. Esta senha deve ser guardada, pois durante o uso do servidor no NetBeans ela será solicitada para permitir a inicialização do mesmo. 32 3.2.2 NetBeans 4.1 Segundo SILVA (2005), o NetBeans 4.1 IDE é um conjunto de bibliotecas, módulos e APIs, formando um ambiente integrado de desenvolvimento visual possibilitando ao desenvolvedor compilar, depurar e efetuar deploying de suas aplicações . Podem-se destacar os seguintes recursos inclusos nesta plataforma: • Depurador e compilador de programas; • Auto-completar avançado, depurador de erros, depurador de Servlets; • Suporta linguagens Java, C, C++; • Suporte à XML, HTML, JSP e Servlets; • Recursos para desenvolvimento de Web Services; • Identação automática de código disponível, • Suporte a Database, Dataview, Connection Wizard; • É possível integrar os módulos e extensões como o Jfluid e J2ME Mobility. O ambiente é um produto OpenSource desenvolvido e disponibilizado pela Sun, 100% Java e possui vários módulos de expansão (modules), que podem ser baixados do próprio site da IDE. Ao ser iniciado, o NetBeans 4.1 apresenta a tela de boas vindas ao usuário, que oferece algumas opções essenciais para o início de uma aplicação, como mostra a figura 11. Nesta figura pode ser observada a interface da ferramenta em questão, juntamente com as algumas opções que ela proporciona ao usuário. 3.2.3 SJSAS 8.1 Esta versão do servidor de aplicação desenvolvido e disponibilizado pela Sun é cheio de recursos e novidades, como já comentadas anteriormente. O SJSAS 8.1 é ideal para se trabalhar com aplicações Java e particularmente com o NetBeans versão 4.1, visto que o mesmo é desenvolvido pela própria Sun. Ferramentas estas que têm um ponto muito importante também por serem disponibilizadas gratuitamente na Internet. 33 FIGURA 11 - Tela inicial do NetBeans IDE. Conforme KEEGAN et al. (2005), o SJSAS possui suporte completo para aplicações J2EE e inclui todo suporte necessário para Web Services, facilitando assim o desenvolvimento do trabalho. 3.2.4 Interbase 6 O Interbase 6 é um software gratuito de gerenciamento e criação de banco de dados fornecido pela Borland Brasil. Adapta-se a várias plataformas, utiliza base SQL e é um banco de alta performance, destinado a aplicações de missão crítica e aplicações baseadas na Internet. O Interbase é utilizado por empresas de grande porte como a NASA, Motorola, Nokia, IBM (Brasil), e muitas outras, visando isto, é utilizado neste trabalho também. No presente trabalho, o Interbase foi utilizado para suprir a necessidade da criação de uma tabela para armazenamento das informações das empresas. Estas informações são o cadastro completo dos produtos oferecidos pela empresa juntamente com suas características e detalhes obrigatórios. 34 3.3 Implementação do serviço Web Nesta seção é apresentada uma análise dos serviços a serem implementados no trabalho, baseado no estudo de caso descrito anteriormente e, também um passo a passo de como desenvolver o serviço utilizando a IDE NetBeans 4.1. 3.3.1 Análise dos serviços a serem implementados com base no estudo de caso É possível definir as opções oferecidas com a utilização de Web Services no site implementado, dividindo estes serviços que deverão ser disponibilizados para a consulta dos clientes em duas formas possíveis. A primeira opção que o cliente possui é a consulta de preços por peça escolhida, ou seja, nesta função inicial, deve ser implementado uma operação que com base no “nome” ou “id” do produto escolhido seja feita uma busca nos bancos de dados cadastrados e retorne o respectivo valor, formas de pagamento e prazo de entrega (disponibilidade) da peça escolhida. A segunda opção é pela consulta do valor de um pacote de peças escolhidas, onde deve ser disponibilizada uma função que possibilite o cliente escolher uma quantidade de peças e receber o valor total dos produtos juntamente com as formas de pagamento e prazo de entrega. Nesta segunda opção, o cliente também poderá no caso, criar sua configuração preferida de um computador completo, que o sistema retornará o valor com condições para pagamento do computador. 3.3.2 Configurando o serviço através do NetBeans Durante este capítulo é apresentado um passo a passo básico, de como foi desenvolvido o serviço Web para o trabalho. O desenvolvimento desta seção é realizada com base no tutorial disponível em: <http://www.netbeans.org/kb/41/ tutorial-webservice.html>. Utilizando as ferramentas instaladas, deu-se inicio a parte da implementação do Web Service, pela definição no NetBeans do servidor a ser utilizado. Então, para registrar no NetBeans o SJSAS 8.1, que é o servidor Web escolhido foram seguidos os 35 seguintes passos: 1. Escolhendo a opção Tools e depois Server Manager, abre-se uma nova janela. Clique em Add Server, seleciona o SJSAS 8.1 e depois clica-se em Next; 2. Define-se a senha do servidor e Location (ou localização) que por padrão segue o endereço “localhost:4848”, depois clica-se em Finish. Estando configurado o servidor a ser utilizado no desenvolvimento da aplicação Web, para criar o serviço Web completo, foi criado primeiramente um novo projeto. 1. Escolhendo a opção Files e depois New Project, No quadro Categories, escolha Web e em Projects escolha Web Application e após clica-se em Next, como mostra a figura 12; 2. Na próxima janela foi definido o nome e local (diretório) do projeto, junto com seu respectivo servidor, depois clica-se em Finish. FIGURA 12 - Criando um novo projeto. Tendo criado o projeto basta desenvolver o Web Services, para isso é necessário executar as seguintes etapas: 1. Clicando com o botão direito no nome do projeto e esclolhendo a 36 opção New e depois Web Services como na figura 13. Define-se um nome para o serviço e no campo Package escolhe-se o diretório que será armazenado os arquivos, por fim é necessário confirmar a operação em Finish; FIGURA 13 - Criando o Web Service. 2. Ainda na aba Projects, dentro do projeto criado, na pasta Web Service, clicando com o botão direito sobre ela, escolhe-se add operation. O próximo passo foi nomear a operação e definir o valor que ela deve retornar e seus respectivos parâmetros, para finalizar clica-se em OK. 3. No projeto, expandindo o Source Packages e o diretório escolhido, aparecem os arquivos .java para edição, como mostra a figura 14, e onde a parte final do arquivo é Impl (Implementation) e SEI (Service Endpoint Interace) definido automáticamente pelo NetBeans. Então configura-se o arquivo da implementação de acordo com a funcionalidade do Web Service. Na seqüência é necessário gerar e configurar a SOAP Message Handler, ou manipulador de mensagens SOAP. Esta função que permite processar a mensagem SOAP e estender a funcionalidade do serviço. A Message Handler pode residir tanto no servidor quanto no cliente da aplicação. 37 FIGURA 14 - Exemplo dos arquivos no Source Packages. 1. Clicando com botão direito no projeto escolhe-se New e depois File/Folder. No quadro Categories, escolhe-se Web Services e em File Types escolhe-se Message Handler e clica em Next como apresentado na figura 15. Após isto define um nome e o diretório e clica em Finish. FIGURA 15 - Criação da mensagem Handler. 2. Depois da criação da mensagem, clica-se com botão direito no Web 38 Services escolhe-se Configure Handlers. Na janela aberta, Configure SOAP Message Handlers, clica-se em add e seleciona-se o arquivo Handler, expandindo o projeto até no Source Package, como apresentado na figura 16, neste caso o nome “PecasWSLogger” é o arquivo Handler. Por fim, clica-se em OK. FIGURA 16 - Configuração da mensagem Handler no Web Service. 3.3.2.1 Registro e teste do serviço criado Com o serviço pronto e configurado, é feito o registro e um teste do Web Service para que assim, seja criado um serviço correto, livre de erros de sintaxe e semântica, para ser utilizado corretamente por uma aplicação cliente. 1. Clicando com botão direito do mouse sobre o Web Service, escolhe-se Add to Registry. Aparecendo a janela com a url do arquivo WSDL do serviço, clica-se em OK. (figura 17). Obs.: É indispensável a gravação deste endereço, pois a url definida, será utilizada mais adiante na criação do cliente para o serviço (Web Service Client). 2. Após registrado o serviço, na aba Runtime, expandindo Web Services e depois o seu serviço Web. Quando mostrar a operação criada, clicase com o botão direito e escolhe Test Operation. A janela Test Web Service Operation terá os parâmetros para serem inseridos e o botão 39 Submit. Após inseridos os parâmetros e clicando em Submit apresenta-se o resultado da operação definida conforme apresentado na figura 18. FIGURA 17 - Registrando o Web Service. FIGURA 18 - Testando a funcionalidade do serviço Web. 40 Agora que o serviço esta criado e testado, tudo de acordo com a funcionalidade proposta a ele, é integrado um cliente a este serviço, conforme apresentado na seção 4.3. 3.4 Implementação do cliente Para se trabalhar com Web Services é necessário o desenvolvimento de um cliente. Sendo ele o responsável por fazer uso e acesso do serviço disponibilizado nos servidores das empresas. Os passos a seguir mostram como criar e consumir ou utilizar um Web Service Client ou um cliente Web Service: 1. Primeiramente cria-se um novo projeto, clicando em Files depois New Project. No quadro Categories escolhe-se Web e em Projects escolhe Web Application, depois clica-se em Next. Na próxima janela definese o nome e local (diretório) do projeto, junto com seu respectivo servidor, finalizando clica-se em Finish. 2. Após isso, clica-se com botão direito sobre o novo projeto criado, e escolhe New depois Web Service Client. Neste ponto, na nova janela, deve ser colocada a url gravada no tópico do registro do serviço, anteriormente. Clica-se em Retrieve WSDL e seleciona-se o Package, para assim preencher o Local FileName, e clique no botão Finish. 3. Nota-se que na pasta Web Services References está o Web Service Client criado. Se for expandido, terá a operação criada anteriormente, e pode-se fazer o mesmo teste também já visto, definindo os parâmetros e clicando em Submit. Agora está tudo pronto para a criação do cliente para acesso. É nesta estapa, na criação do cliente para o Web Service, que deve-se implementar o Servlet baseado na intenção do serviço, ou seja, o Servlet irá possibilitar 41 à quem o acessa, uma total funcionalidade baseado no serviço desejado que deverá ser corretamente programado ou implementado no Servlet. 1. Clicando com o botão direito do mouse no Web Service Client definido, escolhe-se New depois Servlet. Define-se o nome e o Package field do mesmo e clica-se em Next e então Finish. O servlet é aberto no Source Editor, para a devida configuração. O resultado deste código Servlet desenvolvido, conforme apresentado uma parte dele na figura 19, é quem será juntamente com o arquivo JSP implementado, o portal de acesso para o cliente poder utilizar as funções do serviço Web implementado. A figura 20 mostra o arquivo JSP da página que o cliente irá acessar para efetuar as consultas. ... public class ServletCliente extends HttpServlet { ... out.println("<html>"); out.println("<body>"); String nome = req.getParameter( "nomeLocaliza" ); JOptionPane.showMessageDialog(null,"aff " + nome); String driver = "jdbc:firebirdsql:"; String bancoDados = "//localhost:3050/C:/Documents and Settings/bandit/Desktop/uniplac 2005/TCC/WS/BANDITWS.GDB"; String user = "SYSDBA"; String pass = "masterkey"; try { Class.forName("org.firebirdsql.jdbc.FBDriver"); Connection con = DriverManager.getConnection(driver + bancoDados, user, pass); Statement st = con.createStatement(); ResultSet rs = st.executeQuery( "SELECT * FROM tabelaws WHERE nome='" + nome +"';"); out.println("<h4> Estas são as características do produto selecionado. </h4>" ); ResultSetMetaData rsmd = rs.getMetaData(); ... catch (SQLException e) { e.printStackTrace( out ); } out.println( "<p><a href=\"index.jsp\">Voltar</a></p>" ); out.println("</body>"); out.println("</html>"); out.flush(); out.close(); } ... FIGURA 19 - Parte de código Servlet desenvolvido. 42 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Acesso para o cliente fazer consultas dos produtos</title> </head> <body> <hr> <h2>PORTAL DE ACESSO AO CLIENTE</h2> <hr> <center>Consultar / Verificar Produtos</center> <hr> <form method="POST" action="ServletCliente"> <p>Escolha o produto a ser consultado:</p> <select name="nomeLocaliza" size="1"> <option value="">-- escolha --</option> <option value="MONITORES">MONITORES</option> <option value="PROCESSADORES">PROCESSADORES</option> <option value="HDs">HDs(Disco Rigido)</option> </select> <p><input type="SUBMIT" value="Pesquisar"></p> </form> </body> </html> FIGURA 20 - Código do arquivo JSP que é o portal de acesso para o cliente. 3.5 Manutenção do cadastro de peças Juntamente com o serviço Web e o cliente, já descritos anteriormente, também será implementada uma página Web, baseada nas tecnologias JavaServer Pages (JSP) e Servlet. Esta página terá como função a manutenção e atualização das informações fornecidas pelas empresas, nas tabelas do banco de dados. Este referido banco de dados, já citado no estudo de caso contido no tópico 3.3.1, possuirá uma tabela correspondente aos produtos ou peças oferecidas pelas empresas. Esta tabela então possuirá vários itens cadastrados para o acesso e consulta de diversos clientes, com isso, estas informações precisarão ser atualizadas periodicamente. Por exemplo, caso um dos produtos já cadastrados seja vendido, ou sofra alguma alteração quanto ao preço, descrição, etc., o mesmo deverá ter o seu estado atualizado o quanto antes, para assim evitar consultas incorretas dos clientes. E é nesta parte do trabalho então que se dá a função para esta página Web desenvolvida. As empresas quando acharem necessário poderão atualizar e alterar os produtos cadastrados. Esta página é composta por quatro arquivos Servlets, que são responsáveis pelas funções de inclusão, alteração e remoção dos produtos cadastrados. 43 Possui também uma função ativada por um botão que mostra o conteúdo completo dos produtos cadastrados na tabela no banco de dados. Juntamente a isso há também um arquivo JSP que é responsável pela chamada dos Servlets e a estruturação da página Web conforme seu código apresentado na figura 21. 3.6 Arquivos do Web Service Nesta seção são apresentados os arquivos e fragmentos de códigos mais importantes que foram criados para o funcionamento do Web Service. • ProdutosDAO.java: DAO significa Data Access Object ou Objeto de acesso a dados. Neste arquivo são definidas as rotinas SQL para a conexão e consulta ao banco de dados, A figura 22 apresenta uma parte do código deste arquivo. <html> ... <hr> <center> Mostrar Tabela dos Produtos Atual</center> <hr> <form method="POST" action="MostrarTabelaProdutos"> ... <hr> <center> Cadastrar Novo Produto </center> <hr> <form method="POST" action="CadastrarProduto"> <p>ID <input type="text" name="id" size="4" maxlength="4"></p> <p>Nome <input type="text" name="nome" size="30" maxlength="30"></p> <p>Descrição <input type="text" name="descricao" size="40" maxlength="40"></p> <p>Quantidade <input type="text" name="quantidade" size="8" maxlength="8"></p> <p>Situação <input type="text" name="situacao" size="1" maxlength="1"></p> <p>Valor <input type="text" name="valor" size="6" maxlength="6"></p> <p>Condições <input type="text" name="condicoes" size="10" maxlength="10"></p> <p>Marca <input type="text" name="marca" size="20" maxlength="20"></p> <p><input type="SUBMIT" value="Cadastrar"></p> </form> <hr> <center>Consultar / Verificar Produtos</center> <hr> <form method="POST" action="ConsultarProduto"> <p>Escolha o produto a ser consultado: </p> <select name="nomeLocaliza" size="1"> <option value="">-- escolha --</option> <option value="MONITORES">MONITORES</option> <option value="PROCESSADORES">PROCESSADORES</option> <option value="HDs">HDs(Disco Rigido)</option> ... </select> <p><input type="SUBMIT" value="Procurar"></p> </form> <hr> <center>Alterar e/ou Deletar Produtos</center> <hr> <form method="POST" action="AlterDeletProdutos"> 44 <p>Selecione o produto que sera excluido:</p> ... </html> FIGURA 21 - Fragmento de código da página JSP desenvolvida. • Conexao.java: É responsável pela efetivação da conexão com o referido banco de dados do trabalho, onde estarão armazenados todos os produtos cadastrados pelas empresas. Na figura 23 é apresentada a parte principal da realização desta conexão. • Produtos.java: É um arquivo Value Object (V.O.), que representa uma classe do tipo Java Beans. Onde de acordo HORSTMANN (2004), o JavaBean é uma classe com um construtor default que expõe propriedades através de seus métodos get e set. Métodos estes demonstrados no código deste arquivo de acordo com a figura 24. Conforme BOMFIM JÚNIOR (2002), o espectro de uso dos Java Beans é amplo e está originalmente ligado ao desenvolvimento de aplicações visuais. ... public PecasDAO() { Conexao.getCon(); stm = Conexao.getStm(); } public void consultarID() String instrucao = "SELECT VALOR FROM TABELAWS WHERE ID = " + getID() + ";"; try { ResultSet rs = stm.executeQuery(instrucao); while (rs.next()) { double valorPeca = rs.getDouble("VALOR"); setValor(valorPeca); } } ... public void consultarNome() { String instrucao = "SELECT t.VALOR FROM TABELAWS t WHERE t.NOME = '" + getNome() + "';"; try { ResultSet rs = stm.executeQuery(instrucao); while (rs.next()) { double valorPeca = rs.getDouble("VALOR"); setValor(valorPeca); } } ... 45 FIGURA 22 - Fragmento de código do arquivo ProdutosDAO.java ... public class Conexao { private static Connection con; private static Statement stm; public Conexao() { } public static String conectar() { String driver = "jdbc:firebirdsql:"; String bancoDados = "//localhost:3050/C:/Documents and Settings /bandit/Desktop/uniplac 2005/TCC/WS/BANDITWS.GDB"; String user = "SYSDBA"; String pass = "masterkey"; try { Class.forName("org.firebirdsql.jdbc.FBDriver"); con = DriverManager.getConnection(driver + bancoDados, user, pass); stm = con.createStatement(); return "sucesso"; } ... FIGURA 23 - Parte do código do arquivo Conexao.java package tcc.uniplac; public class Produtos { ... public void setID(int i) { id = i; } public void setNome(String n) { nome = n; } public void setDescricao(String d){ descricao = d; } ... public int getID() { return id; } public String getNome() { return nome; } public String getDescricao(){ return descricao; } ... FIGURA 24 - Fragmento de código do arquivo Produtos.java • PecasWSLogger.java: Este é o arquivo Handler, que tem por finalidade manipular as mensagens SOAP. Através desta classe são tratadas as mensagens SOAP. As operações executadas por esta classe ocorrem sobre o arquivo WSDL, que é o conteúdo gerado pelo Web Service. Na figura 25 é mostrado uma parte do código Handler gerado. • testeBdWsImpl.java: É a implementação do serviço em si, aonde são 46 feitas as chamadas e a instanciação dos outros arquivos. Nesta classe são implementadas todas as operações do serviço Web, que nada mais é do que um método que pode ser invocado por um determinado objeto passando a lista de parâmetros e aguardando um valor retornado depois da execução da operação. Este valor pode ser um tipo primitivo, uma lista de objetos ou um objeto em si. Os métodos desta classe são denominados métodos remotos. Tais métodos são especificados de acordo com a RMI (Remote Method Invocation). Assim sendo, eles podem ser invocados remotamente por outras aplicações, neste caso, os clientes. O código completo do arquivo desenvolvido é apresentado na figura 26. package tcc.uniplac; ... public boolean handleRequest(MessageContext context) { try{ SOAPMessageContext smc = (SOAPMessageContext) context; SOAPMessage msg = smc.getMessage(); SOAPPart sp = msg.getSOAPPart(); SOAPEnvelope se = sp.getEnvelope(); SOAPHeader shd = se.getHeader(); SOAPBody sb = se.getBody(); java.util.Iterator childElems = sb.getChildElements(); SOAPElement child; StringBuffer message = new StringBuffer(); while (childElems.hasNext()) { child = (SOAPElement) childElems.next(); message.append(new Date().toString() + "--"); formLogMessage(child, message); } System.out.println("Log message: " + message.toString()); ... return true; } public boolean handleResponse(MessageContext context) { return true; } public boolean handleFault(MessageContext context) { return true; } public void destroy(){ } ... FIGURA 25 - Fragmento de código do arquivo Handler do serviço, chamado de PecasWSLogger.java. package tcc.uniplac; 47 import javax.swing.*; public class testeBdWsImpl implements testeBdWsSEI { private PecasDAO pecasID; private PecasDAO pecasNome; public double buscaBD(int id) { Conexao.conectar(); pecasID = new PecasDAO(); pecasID.setID(id); pecasID.consultarID(); double resultID = pecasID.getValor(); return resultID; } public double buscaPrecoPorNome(java.lang.String nome) { Conexao.conectar(); pecasNome = new PecasDAO(); pecasNome.setNome(nome); pecasNome.consultarNome(); double resultNome = pecasNome.getValor(); return resultNome; } } FIGURA 26 - Código do arquivo da implementação do serviço Web. • testeBdWsSEI.java: Este arquivo é uma classe abstrata. Ela é definida como uma interface Java, e é implementada através da classe testBdWsImpl.java. Nesta interface são declaradas todas as operações do Web Service, que no caso estão apresentadas na figura 27. package tcc.uniplac; public interface testeBdWsSEI extends java.rmi.Remote { public double buscaBD(int id) throws java.rmi.RemoteException; public double buscaPrecoPorNome(java.lang.String nome) throws java.rmi.RemoteException; } FIGURA 27 - Código completo do arquivo testeBdWsSEI.java 3.6.1 Resultados gerados (telas do programa) A figura 30 mostra a tela inicial da página desenvolvida para que as empresas possam efetuar as devidas atualizações em suas tabelas de produtos disponíveis. 48 FIGURA 28 - Interface da página desenvolvida para acesso das empresas. Na figura 31 é apresentada a função do botão “Mostrar Tabela”, o qual pode ser visto na figura 30. Quando se clica no botão é exposta a tabela completa dos produtos cadastrados pelas empresas até o momento. 49 FIGURA 29 - Tabela apresentada pela página de manutenção dos produtos. A figura 32 demonstra a interface inicial desenvolvida para ser o portal de acesso do cliente. Nesta página, o cliente deverá selecionar o nome, marca e descrição do produto ao qual deseja verificar suas características, dentre elas o principal que é o preço do produto escolhido. 50 FIGURA 30 - Interface de acesso para o cliente. 3.7 Arquivos JARs, WARs e EARs Inicialmente é importante saber o significado do que seja compactar um arquivo. São um ou mais arquivos comprimidos e salvos formando um único arquivo compactado com extensões conhecidas mais popularmente como ZIP. Ao longo da evolução, a comunidade Java descobriu que seria mais fácil também adotar esta opção para comprimir os arquivos criados pelas IDEs. Foram criados então de acordo com UGENIE PCS (2005) os arquivos Java ou Java ARchive (JAR) que são coleções de classes de arquivos; os arquivos corporativos ou Enterprise ARchive (EAR) que são coleções de arquivos JARs, WARs e EJBs; e os arquivos Web ou Web ARchive (WAR) que são coleções de classes, JSP e arquivos XML. Assim sendo, é citado nesta seção do trabalho a utilização dos arquivos de distribuição JARs, WARs e EARs empregados durante o desenvolvimento do serviço Web pelo NetBeans. Agora é abordado um pouco mais sobre cada um destes arquivos. 3.7.1 Java ARchive 51 Segundo UGENIE PCS (2005), o mais básico arquivo JAR normalmente é um simples arquivo comprimido da classe Java. Quando roda-se a aplicação Java, ele sabe onde achar o que precisa referenciando a estrutura. Então o JAR é tanto uma aplicação completa ou é uma série de utilitário que pode ser executado de um computador. O Arquivo JAR, é um pouco mais evoluído que um simples arquivo ou biblioteca, porque pode também conter meta dados sobre a configuração da sua aplicação ou mesmo incluir uma biblioteca que queira ou necessite distribuir. Ainda conforme UGENIE PCS (2005), uma boa notícia é que pode-se acessar as classes do JAR, sem descomprimir-los para o disco rígido do computador pois eles rodarão diretamente através da “maquina”do Java. Por fim então, para classes simples pode-se utilizar este formato de arquivo, que foi o início de tudo. 3.7.2 Web ARchive Os Web Archive ou arquivos Web são utilizáveis em servidores como por exemplo no TomCat, servidores J2EE, e no SJSAS. Segundo ROCHA (2005), com os arquivos WAR pode-se colocar uma aplicação no ar, em muitos casos, simplesmente copiando o arquivo para um determinado local do servidor. A criação de arquivos WAR baseia-se na idéia inicial de copiar e compactar um conglomerado de arquivos e informações complexas para assim coloca-las no servidor, evitando assim o trabalho de organizar e ficar um bom tempo passando todas as informações necessárias para o servidor rodar corretamente. Simplificando basta então mandar os arquivos WAR para o servidor. O mesmo arquivo WAR utilizado no SJSAS, por exemplo, poderá ser usado também para o TomCat, JBoss, Web Sphere, entre outros servidores. A figura 28 mostra o conteúdo especificado de um arquivo WAR. Aonde pode também servir de base para a especificação dos arquivos JAR e EAR. 3.7.3 Enterprise ARchive 52 Por fim, o último arquivo agora o Enterprise ARchive ou arquivos corporativos podem ser instalados em Application Servers independentes, como o JBoss. Um arquivo EAR contém um ou mais arquivos JAR e WAR onde com isso "teoricamente" pode-se distribuir sua aplicação com apenas um arquivo. Assim que um arquivo EAR é criado, ele estará pronto para ser carregado no servidor J2EE, que instancia toda a aplicação. É um solução ideal para distribuir aplicações Web que dependem de EJBs. FIGURA 31 - Conteúdo de um arquivo WAR. 3.8 Conclusão Este capítulo é de suma importância para o entendimento da parte de desenvolvimento do Web Service juntamente com a utilização da IDE NetBeans, tanto a implementação do serviço em si quanto seu respectivo cliente. Foram apresentadas algumas figuras contendo o código ou um fragmento do código dos arquivos criados para o correto funcionamento do serviço. O capítulo mostra também a forma com que poderão ser atualizadas ou 53 alteradas as informações das tabelas nos banco de dados das empresas, visando um melhor entendimento contendo as telas resultantes do desenvolvimento do serviço. É analisado também neste capítulo o estudo de caso do trabalho, onde envolve a explicação completa do funcionamento do sistema, o banco de dados e suas tabelas relacionadas, entre outras partes indispensáveis para o mesmo. 4 PUBLICAÇÃO DO SERVIÇO WEB Este capítulo apresenta um estudo sobre as formas de publicação e registros dos Web Services, contendo várias abordagens sobre outros tópicos importantes, tais como, Discovery, UDDI business Registry (UBR), sites operadores e Private Registry, referentes a este assunto. É visto, também, o propósito das APIs de busca e publicação de serviços Web. 4.1 O que é publicação do serviço Web A publicação do Web Service é feita através do registro UDDI, que é de suma importância na pilha de protocolos dos Web Services, habilitando usuários a publicarem e descobrirem estes serviços. Assim sendo, inicialmente antes de poder ser publicado informações sobre um Web Service em um registro UDDI, faz-se necessário que este serviço esteja rodando corretamente para assim poder ser alcançado ou acessado, e para isto, também é preciso disponibilizar inteiramente o WSDL do serviço e representá-lo via registro UDDI. A publicação do Web Service é, fisicamente, como a publicação de uma aplicação Web comum. A definição pública do Web Service (WSDL) estará disponível para download pela própria aplicação Web que o implementa podendo ser utilizado para efetuar a publicação. A figura 29 demonstra como é o funcionamento da publicação do serviço conforme ROCHA (2002). Iniciando pelo provedor de serviço, ele é quem oferece serviços, onde alguns dos quais podem ser os próprios Web Services. Já o registro de 55 serviços contém um catálogo de endereços dos Web Services, que é o repositório central de informações sobre estes serviços. Por fim o cliente de serviços é a aplicação que descobre um Web Service, implementa sua interface de comunicação e usa o serviço. FIGURA 32 - Arquitetura do serviço para publicação do Web Service. Para que um serviço desenvolvido seja aproveitado é necessário que o cliente consiga localizá-lo, então, muitos usuários que por ventura poderão se tornar clientes dos Web Services disponíveis na Internet, podem sempre quando houver um interesse ou necessidade, fazer a localização dos mesmos através do Discovery que é apresentado no tópico 5.1.1. 4.1.1 Discovery De acordo com PERPÉTUO JÚNIOR e JAGIELLO (2003), o Discovery é o processo de localizar Web Services através de Registries. Registries de Web Services são repositórios contendo documentos que descrevem dados de negócios. Registries, também, proporcionam características tais como, capacidade de busca e acesso programático para aplicações remotas. Discovery pode ser caracterizado em direto ou indireto. 4.1.1.1 Discovery direto Conforme PERPÉTUO JÚNIOR e JAGIELLO (2003), o Discovery direto é o processo de obtenção de dados a partir de um Registry mantido por um provedor de 56 serviço. Dados obtidos por Discovery direto são mais precisos e, portanto, confiáveis, visto que a organização que provê a informação também opera o serviço na Web. 4.1.1.2 Discovery indireto Ainda de acordo com PERPÉTUO JÚNIOR e JAGIELLO (2003), neste caso com a utilização do Discovery indireto, uma organização obtém dados através de um Registry terciário, cujos dados podem não ser precisos, porque provedores de serviço poderiam não atualizar as informações nesse Registry tão freqüentemente. Quando realizado Discovery indireto, as organizações devem se preocupar quanto aos Registries terciários poderem interagir com provedores de serviço para garantir que os dados serão ainda precisos. Apesar disto o Discovery indireto ainda permite avaliar serviços de vários provedores antes do compromisso para usar um serviço particular. 4.2 Autenticação de usuários Conforme apresentado por FERREIRA NETO (2004), a publicação de dados UDDI pode somente ser realizada por usuários autênticos. Cada pessoa, por exemplo que publicar um Web Services, se tornará um operador UDDI e estará livre para implementar seu próprio esquema de autenticação. Caso o usuário não seja reconhecido, a operação de publicação não continuará e será retornado um erro. De outro modo, caso esteja tudo certo com o novo usuário, o site-operador, que será visto no tópico 5.2.1 desta seção, retornará um token de autenticação. Com isso todas as chamadas subseqüentes para criar, atualizar ou apagar registros requerem o uso deste token. Após isso caso o usuário seja bem sucedido, o site-operador retornará um código de status para a verificação da confirmação do usuário. Quando há o término da publicação tem-se a opção de descartar o token. Se o usuário resolve descarta-lo, ele sempre poderá obter um novo token chamando uma função específica para isso. 57 4.2.1 Sites operadores Conforme apresentado por PERPÉTUO JÚNIOR e JAGIELLO (2003), um site-operador é uma organização que hospeda uma implementação do UBR. Uma empresa usuária de UDDI necessita registrar-se somente em um site-operador, conhecido como custodian. O princípio básico do UDDI para um UBR é aquele de que uma empresa “registra uma vez e publica em qualquer lugar”. Princípio que afirma que a informação contida em um UBR custodian é replicada sobre os outros UBRs. Replicação é o processo de atualizar registros, de modo que todas as instâncias daqueles registros originais sejam idênticas. Assim, uma empresa registra os seus dados em um site-operador e esses aparecem também nos outros sites-operadores existentes. Os UBRs proporcionam um diretório de sites operadores UDDI, fisicamente distribuído, mas logicamente centralizado. Isto significa que dados submetidos a um site-operador serão automaticamente replicados através de todos os outros sitesoperadores. Tal replicação não ocorre instantaneamente, mas os sites-operadores se sincronizam para atualização de registros, em intervalos de tempo diariamente. 4.3 Registrando o serviço Web Existem duas formas de se registrar um Web Service, o UDDI business Registry (UBR) que é o registro público do serviço e pode ser acessado tanto por pessoas individuais como também empresas. Mas agora, para organizações que querem restringir o acesso aos seus serviços podem implementar registros privados ou Private Registry, que fornecem segurança adicional para proteção dos dados contra acessos indevidos. 4.3.1 UDDI business Registry Segundo DEITEL, H. M. et al. (2003), a UDDI business Registry (UBR) contém informações sobre empresas e suas capacidades técnicas e promove serviços 58 para organizar e descrever Web Services num local central. Os consumidores deste serviço podem navegar neste registro para encontrar informações sobre negócios e Web Services. Para postar as informações na UBR é necessário o registro com o projeto UDDI. Entretanto qualquer individuo ou negócio pode fazer pesquisas na UBR sem estar registrado. 4.3.2 Private Registry De acordo com DEITEL, H. M. et al. (2003), a UBR é acessível para o publico geral o que significa que cada um pode procurar a UBR para descobrir um Web Service. No entanto muitas organizações podem querer limitar o acesso a seus Web Services. A restrição de acesso aos serviços pode reduzir preocupações considerando o acordo de nível de serviço e segurança. Organizações as quais estão desconfortavelmente expondo seus serviços num fórum público podem implementar Privates Registries ou registros privados. Usualmente registros privados contem características de segurança adicional para assegurar a integridade dos dados e resguardar contra acessos não autorizados. Muitas empresas desenvolvem registros privados para prover registros personalizados para seus clientes. E para dar suporte aos custos e manutenção de serviços personalizados muitas empresas cobram taxas pelo uso de registros privados. Ainda conforme DEITEL, H. M. et al. (2003),existem quatro tipos de registros privados: os e-marketplace UDDI, portal UDDI, partner catalog UDDI e internal enterprise application integration UDDI. 4.4 APIs de busca e publicação Este tópico, de acordo com FERREIRA NETO (2004), aborda as APIs que devem ser usadas em UDDI, para operações de publicação e busca de conteúdos de registros. A UDDI API Specification expõe as APIs de publicação (publishing) e de busca (inquiry). Tal especificação descreve os tópicos sobre as correspondentes às APIs de publicação e busca de serviços. 59 4.4.1 API de Publicação A API de Publicação (publishing API) suporta a operação publish que habilita empresas a colocarem e atualizarem a informação em um registro UDDI. Por questões de segurança, esta API tem acesso restrito e o projeto UDDI requer que os sites-operadores implementem um protocolo de autenticação que verifica a identidade do usuário ou de uma organização antes de criar ou atualizar as informações de um registro. Tal API consiste de funções que provedores de serviço podem usar para criar, atualizar ou excluir usuários. 4.4.2 API de Busca A API de Busca de serviços (Inquiry API) suporta a operação find, que habilita consumidores de serviços a navegarem num sistema UDDI para pesquisar registros de provedores de serviços que oferecem um determinado serviço ou tipo de serviço. Qualquer pessoa pode usar a API de busca para realizar consultas sobre o UBR. Esta API suporta três moldes de consulta, que são: o browser, o drill-down e a invocation pattern. 4.5 Conclusão Este capítulo tem uma importância significativa para o trabalho, pois apresenta a definição e o funcionamento da forma de publicação dos serviços Web, mostra como localizar Web Services através do Discovery, e as duas formas de registrá-los, que podem ser através da UDDI business Registry (UBR) ou dos registros privados ou Private Registries. É mostrado também as APIs que podem ser utilizadas para operações de busca e publicação dos Web Services. 5 CONSIDERAÇÕES FINAIS Apesar de não possuir um tempo de existência expressivo, a tecnologia de Web Services, principalmente os desenvolvidos em Java, está alcançando uma maturidade notável nos dias de hoje. De acordo com SILVEIRA (2004), os Web Services surgiram com o objetivo maior de integrar fontes de dados heterogêneas. Isso é cumprido completamente na maioria dos casos. O fato de muitas empresas terem aderido à idéia de Web Services reforça muito a hipótese de um futuro promissor para estes. Nos EUA, muitas empresas já utilizam fortemente a tecnologia de Web Services, mas no Brasil isso ainda está em progresso. Inicialmente o trabalho apresenta uma completa base teórica referente a tecnologia dos Web Services, onde são mostrados seus principais padrões, funções e ambientes para desenvolvimento, focando principalmente na linguagem Java, incluindo também uma abordagem dos dois níveis de segurança dos Web Services, que são: segurança ao nível de transporte e ao nível de XML. Após isto é apresentado um estudo de caso do serviço proposto, uma abordagem baseada em um tutorial, para o devido desenvolvimento de um serviço Web e seu respectivo cliente com a utilização da IDE NetBeans versão 4.1. Juntamente a isso é apresentada a forma com que é feita a manutenção e atualização do banco de dados dos produtos cadastrados pelas empresas e é feita a exposição dos arquivos utilizados no NetBeans para a criação do serviço. Por fim, é descrita a funcionalidade envolvendo a parte de publicação dos serviços Web. 61 O trabalho esta despertando interesse de algumas empresas do ramo de informática na região, podendo assim proporcionar um diferencial para estas empresas que acatarem estes serviços. Assim sendo, apesar da dificuldade encontrada para a localização de materiais específicos, os objetivos principais foram alcançados, desde a parte conceitual sobre Web Service que está bem definida, a demonstração de como desenvolver serviços Web utilizando o ambiente de programação Java e a utilização da versão 4.1 da IDE NetBeans e o servidor de aplicação Sun Java System Application Server 8.1. Apenas a parte de publicação e registro UDDI do serviço Web infelizmente não foi possível concluir. Mas compensando isto, apesar da dificuldade encontrada para a localização de material específico, foi feito um estudo mais a fundo na versão 4.1 da IDE NetBeans utilizada para o desenvolvimento do Web Service e também o desenvolvimento das páginas JSP utilizando-se de Servlets, para atualizações e alterações no banco de dados e o acesso do cliente para efetuar consultas dos preços dos produtos cadastrados. Este trabalho ajudará muito à quem se dispor fazer novos TCCs nesta área, podendo servir como um embasamento nos estudos. Como sugestões para trabalhos futuros pode ser feita uma reavaliação complementar do tópico referente a publicação deste tipo de serviço e implementações de novos recursos para Web Services. Também podem ser disponibilizados mais dados e funções e, até mesmo, criar um ambiente genérico, não somente voltado para a área de informática, como também para outras áreas. Concluindo, então, espera-se nos próximos anos uma grande disseminação do uso desta tecnologia no que pode se tornar um passo evolucionário no desenvolvimento de aplicações distribuídas. Agora resta aguardar e acompanhar a evolução da aplicabilidade dos Web Services no mercado brasileiro e internacional. REFERÊNCIAS BIBLIOGRÁFICAS ANDRADE, R. Universal Description, Discovery and Integration (UDDI). 2004. Artigo que abrange uma visão geral do protocolo UDDI. Disponível em: <http://www.inf.ufsc.br/~andrade/mobilidade/UDDI.pdf>. Acesso em: 30 out. 2005. BATTISTI, J. Sistemas Distribuídos – Web Services. 2004. Introdução básica sobre Web Services e alguns padrões utilizados por eles. Disponível em: <http://twiki.im.ufba.br/bin/view/MAT167/TutWebServices>. Acesso em: 08 mai. 2005. BOMFIM JÚNIOR, F. T. JSP: A Tecnologia Java na Internet. São Paulo: Érica, 2002. 410 p. COLLA, E. C. Servlets, Java do lado do servidor. Disponível em: <http://www.insite.com.br/docs/develop_servlet95.htm>. Acesso em: 01 set. 2005. COSTA, G. O Modelo de Web Services. 2002. Como desenvolver aplicações em uma nova arquitetura de software. Disponível em: <http://www.promon.com.br/portugues/a_promon/download/PBTR4.pdf>. Acesso em: 14 mai. 2005. D´ÁVILA, M. Tutorial TomCat – Instalação e Configuração Básica. 2005. Disponível em: <http://www.mhavila.com.br/topicos/Java/tomcat.html>. Acesso em: 08 mai. 2005. DEITEL, H. M.; DEITEL, P. J. Java, Como Programar. Porto Alegre: Bookman, 2003. 1386 p. DEITEL, H. M. et al. Java Web Services For Experienced Programmers. New Jersey: Prentice Hall Pearson Education, 2003. 738 p. FERREIRA NETO, P. A. XML Web Services. 2004.Um estudo completo sobre Web Services, XML, UDDI, entre outros padrões. Disponível em: <http://www.dei.unicap.br/~almir/seminarios/2004.1/xml_webservice/>. Acesso em: 02. nov. 2005. FERNANDES, B. V.; VALENTE, E.; FERNANDES, R. J. Web Services. Apresenta definições, alternativas entre outros pontos importantes sobre Web Services. Disponível em: <http://www.terravalente.com/paginas/educacao/informatica/web services>. Acesso em: 14 mai. 2005. 63 GICO JUNIOR, T. I. O fim dos intermediários? 2002. Texto que apresenta uma idéia e conteúdo basicamente sobre B2C e B2B. Disponível em: <http://www.alfaredi.org/rdi-articulo.shtml?x=1442>. Acesso em: 21 out. 2005. HENDRICKS, M. et al. Profissional Java Web Services. Rio de Janeiro: AltaBooks, 2002. 556 p. HORSTMANN, C. BIG JAVA. Porto Alegre: AltaBooks, 2004. 1125 p. <HTTP://WWW.NETBEANS.ORG> Site oficial do NetBeans. KEEGAN, P. et al. NetBeans IDE Field Guide Developing Desktop, Web, Enterprise and Mobile Applications. California: , 2005. 432 p. KURNIAWAN, B. Java para a Web com Servlets, JSP e EJB. Rio de Janeiro: Ciência Moderna, 2002. 808 p. PEREZ, R. Visão geral sobre WebServices. 2004. Disponível em: <http://www.imasters.com.br/artigo.php?cn=1680&cc=74&PHPSESSID=2ec490e364 0e8c539c3b0f7c6d94b631>. Acesso em: 01 mai. 2005. PERPÉTUO JÚNIOR, E.; JAGIELLO, I. L, A. Web Services – Uma solução para aplicações distribuídas na Internet. 58 f. 2003. Monografia (Pós Graduação em Tecnologias para Sistemas de Informação) – Centro de Ciência Exatas e de Tecnologia – Pontifícia Universidade Católica do Paraná (PUC-PR), Curitiba. POTTS, S.; KOPACK, M. Aprenda Web Services em 24 horas. Rio de Janeiro: Elsevier, 2003. RAMIREZ, P.; RAMIREZ, L. Modelos de Middleware em aplicações distribuídas multi-tiers. 2004. Artigo que consta um capítulo com descrições de Web Services, segurança e aplicações dos mesmos. Disponível em: <http://www.aedb.br/seget/ artigos04/224_Publicacao%20-%20Pedro%20Ramirez.doc>. Acesso em: 20 jun. 2005. RAY, E. T. Aprendendo XML. Rio de Janeiro: Campus, 2001. ROCHA, H. Como implementer Web Service com Java. 2002. Envolve um estudo dos Web Services, registro dos mesmos e fala também dos arquivos WAR. Disponível em: <http://www.argonavis.com.br/palestras/webservices/index.html>. Acesso em: 30 out. 2005. ROCHA, H. Componentes Web J2EE. 2005. Arquivo que inclui uma demonstração escrita e ilustrativa sobre os arquivos WAR. Disponível em: <http://www.argonavis.com.br/cursos/java/j550/j550_5.pdf>. Acesso em: 18 out. 2005. SHARPLES, R. Sun Java System Application Server 8.1 2005Q1 Announced. 2005. Disponível em : 64 <http://www.theserverside.com/news/thread.tss?thread_id=31701>. Acesso em: 31 ago. 2005. SILVA, W. NetBeans 4.1 Primeiros Passos. 2005. Apresenta um tipo de tutorial para a utilização e configurações gerais da versão 4.1 da IDE NetBeans. Disponível em: <http://www.guj.com.br/Java.tutorial.artigo.173.1.guj>. Acesso em: 04 set. 2005. SILVEIRA, A. Entendendo os Web Services. 2004. Apresenta uma forma basiliar para um entendimento de serviços Web, juntamente com seus padrões. Disponível em: <http://www.clubedelphi.net/artigos/web_services.asp>. Acesso em: 06 nov. 2005. SIQUEIRA, F. Web Services. 2000. Arquivo que explica os Web Services e seus padrões. Disponível em: <http://www.inf.ufsc.br/~frank/INE6514/WebServicesCor.pdf>. Acesso em: 30 out. 2005. SOARES, W. Crie um Site B2C – Business to Consumer: com PHP 4 e MySQL. São Paulo: Érica, 2001. 611p. TODD, N.; SZOLKOWSKI, M. JavaServer Pages: O guia do desenvolvedor. Rio de Janeiro: Elsevier, 2003. UGENIE PCS. JAR WAR EAR. 2005. Conceitos dos arquivos JARs, Wars e EARs. Disponível em: <http://www.cezwright.com/tools/java/jar_war_ear.htm>. Acesso em: 23 out. 2005. VELOSO, R. R. Java e XML. Processamento de documentos XML com Java. São Paulo: Novatec, 2003. 96p. ZAVALIK, C.; LACERDA, G.; OLIVEIRA, J. Implementando Web Services com Software Livre. Disponível em: <http://www.inf.ufrgs.br/~palazzo/OAI/04%20 Software%20Livre%20-%20Web%20Serv.pdf>. Acesso em: 05 mai. 2005. BIBLIOGRAFIA COMPLEMENTAR BRAGA, U. Web Services – perguntas e respostas. Apresenta questões sobre a tecnologia dos Web Services. Disponível em: <http://www.microsoft.com/brasil/msdn/ Tecnologias/Default.mspx >. Acesso em: 25 abr. 2005. CARMO, D. Tutorial Criando Web Services com Apache Axis. Disponível em: <http://www.conexaoJava.com.br/conexaoJava04/download/minicursos/Criando.um. Web.Service-Conexao.Java.2004.pdf>. Acesso em: 28 mar. 2005. CONSIST ApplinX e Web Services. Conceito básico do que são os Web Services. Disponível em: <http://www.consist.com.br/brasil/applinx/applinx-web.htm>. Acesso em: 27 mar. 2005. FIELDS, D. K.; KOLB, M. A. Desenvolvendo na Web com JavaServer Pages. Rio de Janeiro: Ciência Moderna, 2000. 559 p. LEE, W. Web Services: Comunique-se em Diferentes Plataformas. Disponível em: <http://www.linhadecodigo.com.br/artigos.asp?id_ac=61&pag=1>. Acesso em: 30 abr. 2005. RAMON, F. JDBC 2. Acesso a banco de dados utilizando a linguagem Java – Guia de consulta rápida. São Paulo: Novatec, 2003. SCAGLIA, A. Caminho sem volta. 2003. Artigo sobre a adoção dos Web Services no mundo corporativo e também como usar o serviço. Disponível em: <http://www.itweb.com.br/solutions/internet/internet/artigo.asp?id=34406#>. Acesso em: 19 abr. 2005. UCS–CCET. JAVA. Ferramentas para Edição de Web Services em Java. Disponível em: <http://ccet.ucs.br/dep/DEIN/setores/napro/Java/Java_html>. Acesso em: 24 jun. 2005. APÊNDICES 67 ANEXOS