Escolar Documentos
Profissional Documentos
Cultura Documentos
Autor:
Marcelo Guilherme Khl
PATO BRANCO - PR
2005
de
Especializao
em
Informtica
PATO BRANCO - PR
2005
AGRADECIMENTOS
LISTA DE TABELAS
Tabela 1 Comparao entre formatos e protocolos SOA ................................................ 16
Tabela 2 Cdigo de Falhas Genricos................................................................................ 30
LISTA DE FIGURAS
SUMRIO
LISTA DE FIGURAS............................................................................................................... 7
Resumo .................................................................................................................................... 10
Abstract ................................................................................................................................... 11
CAPTULO 1 - INTRODUO ........................................................................................... 12
1.1 PROBLEMA .................................................................................................................. 12
1.2 JUSTIFICATIVA .......................................................................................................... 12
1.3 OBJETIVOS .................................................................................................................. 13
1.3.1 Geral ............................................................................................................................. 13
1.3.2 Especficos.................................................................................................................... 13
1.4 ESTRUTURA DO TRABALHO.................................................................................. 14
CAPTULO 2 FUNDAMENTAO TERICA............................................................. 15
2.1 WEB SERVICES........................................................................................................... 15
2.1.1 Arquitetura.................................................................................................................... 15
2.1.1.1 Componentes (components): ..................................................................................... 19
2.1.1.2 Papis - funes (Roles) ............................................................................................ 20
2.1.1.3 - Operaes Operations ............................................................................................. 20
2.1.2 Estrutura de Comunicao - Protocolos ....................................................................... 21
2.1.2.1 Rede de Transporte - HTTP ...................................................................................... 23
2.1.2.2 XML Extensible Markup Language ....................................................................... 23
2.1.2.3 SOAP Simple Object Access Protocol ................................................................... 26
2.1.3.1 Elementos WSDL...................................................................................................... 34
2.1.5 Envio de Anexos com Web Services............................................................................ 44
2.2 JAVA .............................................................................................................................. 48
2.3 IMAGEM DO BRAO ................................................................................................. 49
2.4 AXIS Apache Extensible Interaction Software Foundation................................... 50
2.4.1 Arquitetura Axis ........................................................................................................... 50
2.5 TOMCAT ....................................................................................................................... 53
CAPTULO 3 DOMNIO DA APLICAO ................................................................... 54
3.1 Configurando Ambiente para o Desenvolvimento ..................................................... 54
3.1.1 Instalao e configurao do J2SE: ............................................................................. 54
3.1.2 Instalao e configurao do Tomcat 5.0.28 ................................................................ 56
Resumo
Com o advento da Internet e o passar do tempo surgiram tecnologias de comunicao
distribuda, a maior parte delas proprietrias; embutido nessas esto as linguagens de
programao e de scripts, alm de diversas plataformas de sistemas operacionais.
Inmeros so os aplicativos desenvolvidos a partir de combinaes dessas tecnologias,
cada um usando seu prprio padro, o que acarreta falhas de comunicao entre os mesmos.
Havia a necessidade da integrao das informaes, para que facilitasse a comunicao e
integrao entre as empresas, diminuindo a redundncia dos dados, utilizando-se um banco
de dados nico, que pudesse ser acessado por diversos clientes, ao invs de cada um ter o seu
assim aproveita-se as solues j existentes, no precisando adapt-las ou integr-las a
outras, e sim unir as existentes; no influindo em quais linguagens tais aplicativos tinham sido
desenvolvidas ou em que sistemas operacionais necessitavam rodar.
Nesse cenrio, carente de uma soluo urgente, culminou com apario dos Web
Services, que no seu incio tinham como finalidade o uso apenas na web em si,
disponibilizando meios de implementar aplicaes que o mundo do desenvolvimento de
aplicaes necessitava: integrao e interoperabilidade. Realizando a comunicao atravs de
um protocolo comum de comunicao, o HTTP, com uma linguagem de troca de dados
comum, o XML, realizando o envio de mensagens atravs de um protocolo que negocia a
troca das mensagens, o qual roda sobre o HTTP, o SOAP.
Para demonstrar os conceitos de Web Services, desenvolveu-se uma aplicao a partir
de um sistema pronto, desenvolvido em Java pelo autor ROCHA, Rubens1[1]; o qual manipula
um brao eletro-mecnico pela porta paralela. Assim disponibiliza-se esse aplicativo na Web,
para que qualquer programa-cliente, possa acess-lo; independente da linguagem de
programao ou plataforma que esteja rodando esse programa.
Abstract
With the advent of the InterNet and passing of the time technologies had appeared of
distributed communication, most of them proprietors; inlaid in these they are the scripts and
programming languages, beyond diverse platforms of operational systems.
Innumerable the applicatory ones developed from combinations of these technologies
are, each one using its proper standard, what it causes imperfections of communication
between the same ones. It had the necessity of the integration of the information, so that it
facilitated to the communication and integration between the companies, diminishing the
redundancy of the data, - using an only data base, who could be had access by diverse
customers, instead of each one to have its - thus uses to advantage the existing solutions
already, not needing to adapt them or to integrate them it others, and yes to join the existing
ones; influencing in which languages such applicatory ones they had not been developed or
where operational systems needed to twirl.
In this scene, devoid of a urgent solution, it culminated with appearance of the Web
Services, that in its beginning had as purpose the use only in web in itself, to become
available half to implement applications that the world of the development of applications
needed: integration and interchange. Carrying through communication through a common
protocol of communication, the HTTP, with a language of common exchange of data, the
XML, carrying through the sending of messages through a protocol that negotiates the
exchange of the messages, which wheel on the HTTP, the SOAP.
To demonstrate the concepts of Web Services, an application from a ready system was
developed, developed in Java for the author ROCK, Rubens
[1]
; which manipulates an
electromechanical arm for the parallel door. Thus available this applicatory one in the Web,
so that any program-customer, can have access it; independent of the platform or
programming language that is writing this program.
12
CAPTULO 1 - INTRODUO
Um Web Service, doravante WS, uma tecnologia que aproveita a flexibilidade da
Internet para realizar negcios na WWW2 (VENETIENER)[2], tornando assim possvel uma
comunicao transparente entre aplicaes distintas.
A aplicao de WS, vem a suprir muitas das necessidades dos desenvolvedores de
softwares, pois consegue-se integrar sistemas computacionais de diferentes fornecedores,
tanto de plataforma como de linguagens, disponibilizando assim servios, que qualquer
sistema cliente pode acessar. Para demonstrar esta utilizao de servios, demonstra-se nesse
trabalho o acesso via Internet, de um dispositivo eletro-mecnico ligado na porta paralela que
est localizado remotamente em outro computador (servidor). Esse acesso ser feito atravs
de um programa que poder ser feito em qualquer linguagem, rodando em qualquer
plataforma.
1.1 PROBLEMA
A necessidade de demonstrar como a tecnologia de WS pode solucionar a dificuldade
existente de integrao entre as diversas solues de softwares, desenvolvidos pelas mais
variadas linguagens de programao, bem como as diferentes plataformas sob os quais os
mesmos rodam.
Alm disso, esses servios vem sendo cada vez mais utilizados e exigidos no mundo
dos negcios. Segundo artigo publicado na FonteMdia Comunicao[4] em 14/07/2005, a
empresa que quiser vender para grandes compradores, como montadoras de automveis,
aeronutica, indstria petroqumica, alimentos e de outros setores, e no tiver WS
permanentemente atualizados pode ficar fora do mercado. Fatos como estes, alavancam o
aprendizado neste quesito.
1.2 JUSTIFICATIVA
Quando se disponibiliza o acesso remoto de um dispositivo, tem-se um leque
abrangente de opes de aplicaes, sejam elas:
13
1.3 OBJETIVOS
1.3.1 Geral
O objetivo desse trabalho disponibilizar um WS, para prover a comunicao entre
uma aplicao desenvolvida em qualquer linguagem de programao, que esteja instalado em
computadores, rodando diferentes sistemas operacionais; para acessar o dispositivo de um
brao eletrnico (aplicao servidora j existente). Demonstrando assim como podemos
utilizar WS para promover a interoperabilidade entre aplicaes rodando em plataformas ou
linguagens heterogneas.
Dessa maneira, utiliza-se na prtica, os conhecimentos adquiridos ao longo das
disciplinas da especializao.
1.3.2 Especficos
A implementao da aplicao, para que possa demonstrar as metas lanadas,
implicar no:
14
2:
traz
fundamentao
terica
das
tecnologias
utilizadas
no
15
Segue abaixo toda a estrutura tecnolgica necessria, para tornar possvel um WS,
baseado nas informaes da SISTINET[5] como tambm em HENDRICKS[7].
2.1.1 Arquitetura
Uma arquitetura de WS ocupa, dentro de uma relao, vrios componentes e
tecnologias que compreendem uma pilha de WS ou implementaes completamente
16
funcionais. Componentes e tecnologias que estendem a arquitetura bsica so representadas
dentro da arquitetura estendida.
WS est baseada na arquitetura bsica SOA8, ilustrado na figura 1 e inclui tecnologias
capazes de trocar mensagens, descrever WS, publicar e descobrir WS.
Registro do
Servico
Consumidor
do Servico
Provedor do
Servico
Mecanismo de
Invocao
Formato
de Datos
Formato troca
de informaes
Protocolo de
Transferncia
Interface de
Descrio
Mecanismo de
Publicao
Java RMI
CORBA
DCE
Web Services
Java RMI
CORBA RMI
RPC
JAX-RPC,
.NET, AXIS
Java Serializado
CDR
NDR
XML
Stream
GIOP
PDU
SOAP
JRMP
IIOP
RPC CO
HTTP, SMTP
Java Interface
CORBA IDL
DCE IDL
Java Registry
COS naming
CDS
Service-Oriented Architeture:
WSDL
UDDI
17
O fundamento da arquitetura WS define uma interao entre agentes ou entidades de
software, como um trocador de mensagens entre servios requisitados e provedores de
servios.
Os requisitantes so softwares agentes que requisitam a execuo do servio.
Provedores so agentes de software que provem um servio. Agentes podem ser ambos,
requisitantes e provedores. Provedores so responsveis por publicar a descrio do servio
que ele esta disponibilizando / provendo. Requisitantes devem ser capazes de encontrar as
descries dos servios. A interao entre: o provedor de servio, a agncia de servio de
publicao e requisio do servio envolve publicao, localizao e operao de unio.
Num cenrio tpico, um provedor de servio hospeda um exemplo de uma rede
acessvel atravs de agente de software. O provedor do servio precisa fazer duas aes
importantes para ter acesso a todo o potencial de um servio Web:
18
A figura 2 ilustra a arquitetura bsica do Web Service, na qual um requisitante de
servio e um provedor interagem, baseados no servio descrio da informao publicada
pelo provedor e descoberta pelo requisitante atravs de algumas formas de descobrimento da
agncia. O servio requisitado e os provedores interagem trocando mensagens, as quais
devem ser agregadas para o formulrio MEPs10, especificados na W3C [6].
19
pertinente para estender as funcionalidades, como segurana, contextos de transao,
informao de orquestrao, ou informao para roteamento de mensagens. O dado da parte
da mensagem contm um contedo de mensagem ou dados.
Um WS descrito usando um padro, uma notao formal XML, chama-se isso de
descrio do servio, que prov todos os detalhes necessrios para interagir com o servio,
incluindo formato de mensagens, transporte de protocolos, e localizao. As naturezas das
interfaces escondem os detalhes da implementao do servio ento isso pode ser usado
independentemente da plataforma de hardware ou software na qual implementada e
independentemente da linguagem em que foi escrita.
WS pode ser usado sozinho ou em conjunto com outros WS para atingir uma
agregao complexa ou uma transao de negcios.
A figura 1 ilustra a relao entre requisitantes, provedores, servios, descries, e
descobridores de servio no caso, agentes que fazem o papel de requisitantes e provedores. O
provedor de publicao, publica um arquivo WSDL que contm a descrio da mensagem e o
ponto final da informao para permitir ao requisitante gerar a mensagem SOAP e envi-la
para o destino correto.
Para implantar um MEP comum da requisio/resposta, por exemplo, uma
implementao WS prov agentes de software que funcionam ao mesmo tempo como
requisitantes e provedores. O requisitante do servio envia uma mensagem em forma de uma
requisio de informao, ou para realizar uma operao, e receber uma mensagem do
provedor do servio que conter um resultado para a requisio ou operao. O provedor do
servio recebe a requisio, processa a mensagem e envia uma resposta. A tecnologia
tipicamente usada para esse tipo de interao WS inclui SOAP, WSDL, e HTTP.
As sees seguintes provem mais definies para: os componentes, suas funes e
operaes na arquitetura WS.
20
Descrio do servio: As descries do servio contem detalhes da interface e
implementao do servio. Isso inclui seus tipos de dados, operaes, informaes de
ligaes, e localizao de rede, poderiam tambm incluir categorizao e outros meta dados
para descobrir facilidades e utilizao pelos requisitantes. A descrio completa deve ser
realizada como um conjunto de descries de documentos XML. A descrio do servio deve
ser publicada para um requisitante diretamente ou para uma agencia descobridora.
21
Publicao: para ser acessvel, um servio precisa publicar suas descries assim
como o requisitante pode subseqentemente localiz-las.
Localizao: Na operao de localizao, o requisitante do servio recupera uma
descrio do servio diretamente ou perguntando pelo registro do servio requerido. A
operao de localizao deve ser envolvida em duas fases de ciclos de vida para o requisitante
do servio: no tempo de construo para recuperar a interface da descrio do programa
desenvolvido, e na hora de execuo para recuperar a ligao do servio e descrio da
localizao para invocao.
Interao: eventualmente, um servio necessita ser invocado. A operao de interao
do requisitante do servio invoca ou inicializa uma interao com o servio na hora de
execuo usando os detalhes da descrio da ligao para localizao, contatar, e inovar o
servio.
A figura 3 ilustra todos os componentes da tecnologia, bem como os protocolos, que
sero visto na prxima seo.
22
servio Web, sem considerar a linguagem em que ele foi escrito. Assim temos as regras ou
protocolos para que toda a troca de informaes entre aplicaes possa ocorrer,
independentemente do sistema operacional, da linguagem de programao ou do modelo do
objeto.
A implementao de WS baseada em uma pilha11 de protocolos ilustrada na figura 4;
bem com em linguagens padres da Web, dentre eles destaca-se:
11
Pilha, neste caso, significa o conjunto de todos os protocolos utilizados num sistema.
23
uma linguagem XML para a descrio de interfaces de servios, visando tornar essa descrio
inteligvel para programas que iro interagir com esses servios.
12
13
14
24
Entre as diversas vantagens do XML sobre HTML, destaca-se a que est intimamente
relacionada com o escopo desse trabalho, ou seja, com WS; seja ela:
Aplicaes padronizadas para XML possibilitam que diferentes aplicativos trabalhem
em
conjunto,
trocando
informaes
entre
documento,
proporcionando
maior
15
Isto realizado atravs de ferramentas que convertem os dados que esto num formato especfico, para o
formato XML.
16
Usa-se o smbolo < >.
25
Algumas regras de um documento XML:
Na 3 linha tem-se o elemento raiz <monografia> sendo que essa tag fechada no
final do documento 13 linha;
- XML Namespaces:
So usados para garantir que os nomes dos elementos dos seus documentos XML
sejam nicos.(SILVA)[13]. Como esses nomes podem ser inventados, existe a possibilidade
de que outro desenvolvedor possa estar usando nomes iguais aos seus elementos. Para isto
usa-se uma palavra reservada xmlns, tornando todos os elementos declarados nicos, pois o
namespace aponta para um endereo de Internet que no pode ser duplicado. Isto est
demonstrado na 3 linha do exemplo supracitado.
17
26
- XML Schema:
usado para definir como determinado conjunto de um ou mais documentos XML
devem ser construdos, quais os elementos eles podem conter e em que ordem. Como poder
ser o contedo desses elementos e quais os atributos eles podem conter (TESH)[14]. Quando
queremos validar um documento XML atravs de um XML schema necessrio referenciar
no cabealho daquele documento onde se localiza o arquivo de tal esquema21, como abaixo
demonstrado:
- Gramtica SOAP:
O envelope SOAP segue uma gramtica prpria para a sua formatao:
Partes Obrigatrias:
o Envelope: designado em uma mensagem SOAP pelo elemento
<Envelope>;
o Corpo (body): contm a carga til22 da XML, que codifica a chamada do
procedimento, as respostas da chamada do procedimento, ou o relatrio de
falhas.
21
22
27
Parte Opcional:
o Cabealho (header): pode se usado para adicionar recursos como
autenticao, gerenciamento de transao de servios. No obrigatrio,
mas, se for usado, dever vir imediatamente depois do elemento envelope
SOAP
Transporte (HTTP)
Envelope SOAP
Cabealho SOAP
<Bloco SOAP>
...
<Bloco SOAP>
Corpo SOAP
<Bloco SOAP>
...
<Bloco SOAP>
28
Segue abaixo uma mensagem SOAP e seus exclarecimentos:
Onde:
Nas linhas 1,2 e 3 tem-se o incio da mensagem SOAP que est sendo finalizada na
linha 17;
29
Esse elemento a nica entrada de corpo definida na especificao SOAP, definindo
quatro sub-elementos, a seguir:
GenericFaultCode.SpecificFaultCode.
<faultstring>: usado para fornecer uma explicao da falha que possa ser
entendida de forma clara. O exemplo abaixo usado em combinao com o
<faultcode> para descrever o problema exato que foi encontrado, nesta caso: um
nome de usurio ou senha esto invlidos.
<faultactor>: usado para informar qual foi o servio que causou a falha em uma
mensagem. til se uma mensagem SOAP passa atravs de vrias aplicaes
SOAP, antes de chegar a aplicao SOAP final. Assim identifica-se atravs do
<faultactor> qual das aplicaes gerou a falha.
30
- Cdigo de Falhas Genricos:
Na tabela 2 est a descrio e os tipos de <faultcode> genricos.
Nome do FaulCode
Significado
VersionMismatch
MustUnderstand
Client
Server
Tipos Simples:
O exemplo a seguir mostra como os tipos string e int podem ser codificados numa
mensagem SOAP.
A carga til desta mensagem contm uma chamada RPC: processoReboot; cuja
finalidade reinicializar um computador remoto. Possui dois parmetros: ip e delay, que so
codificados usando os tipos de dados string e int.
Essa mesma carga til poder ser codificada da seguinte forma:
31
32
- Tipo Compostos:
Na definio existem dois tipos compostos:
1) Structs: So definidos como estruturas e podem ser multi-referncia, onde a
modularidade dos valores permite usar um valor mais de uma vez, como no exemplo abaixo,
onde o livro possui dois autores, ambos associados mesma informao de endereo
<Endereco-2>.
23
33
Na figura 6 temos a hierarquia de todos os tipos de dados SOAP, especificados no
XML Schema Part2: Datatypes; onde so definidos 44 tipos simples incorporados que
podem ser especificados usando o atributo xsi-type em um elemento.
34
2.1.3 WSDL Web Service Description Language
Uma vez que WS permite que aplicaes se comuniquem umas com as outras atravs
de qualquer rede, usando linguagens diferentes; faz-se necessrio descrever esses servios
externos: a interface externa da aplicao ou do servio. Dessa forma outras aplicaes
conseguem adaptar-se dinamicamente aos servios oferecidos, permitindo que os programas
cliente encontrem os mtodos remotos.
A maneira padronizada para descrever os WS feita atravs de um documento que
utiliza o formato XML, chamado WSDL (Linguagem de Descrio de Web Service).
Basicamente, esse documento, define as seguintes funcionalidades do servio:
Esse documento WSDL segue regras de especificao da W3C[17] , bem como criado
com uma gramtica XML especfica.
Multipurpose Internet Mail Extensions Padro Internet para envio e recebimento de mensagens nos mais
variados formatos, alm do ASCII.[18]
35
<binding>:
Este o elemento mais complexo, pois permite inserir com uma certa liberdade, outros
elementos no seu contedo.
Este elemento descreve como um tipo de porta mapeado para um protocolo de
chamada de rede, ou seja, qual ser o mecanismo usado pelo servio para se comunicar com
um cliente, especificando como os tipos de porta sero chamados. Sendo, portanto, um
vnculo entre os elementos abstratos e concretos.
Os vnculos ou mecanismos, especificados no WSDL, podero ser o SOAP, HTTP e
MIME.
O elemento binding sempre ser seguido por um elemento especfico para o protocolo
que est usando. Se for um SOAP, o elemento <binding> ser seguido por um <soap:
binding>, o qual ter um atributo importante que o <style>, podendo ter o valor rpc ou, por
padro document. A diferena entre os dois valores a maneira de como ser a comunicao
com o servio; definindo como as mensagens individuais do SOAP so construdas:
style="rpc"
elemento XML, que recebe seu nome aps a operao, definido no elemento <operation>.
Utiliza-se esse valor se o servio consistir em uma funo que utilize um conjunto de
parmetros e retornar um valor.
style="document"
sem usar mapeamento. Utiliza-se esse valor se o servio for baseado em mensagens e lidar
diretamente com documentos XML.
Abaixo segue um fragmento do documento WSDL, usado neste projeto,
exemplificando o exposto acima:
36
Outro atributo do <soap: binding> o transport, onde se define o protocolo de rede,
atravs da qual as mensagens sero enviadas, usando o namespace apropriado.
No elemento <soap: operation> est definido um atributo denominado soapAction
contendo o cabealho da ao do SOAP para o servio, que obrigatrio para solicitaes do
SOAP que so enviadas atravs de HTTP. Assim o destinatrio do envelope dessa solicitao,
usa esse campo para identificar o servio exato que invocado. Na implementao Apache
SOAP utiliza-se o atributo namespace do elemento <Body> para este fim, ignorando-se o
cabealho de ao. Neste caso, o cabealho deve estar presente contendo uma string vazia,
como no cdigo abaixo:
<types>:
Contm a definio em XML, dos tipos de dados de entrada; que sero passados ou
retornados do WS. Estes dados devem ser passados ordenadamente ou de forma serializada,
ou seja, na ordem em que eles esto definidos no documento WSDL.
37
<message>:
Define as mensagens usadas pelo servio; os dados que podem ser trocados. A
mensagem pode ser composta de alguns argumentos: numa chamada de mtodos, todos os
parmetros deste so representados por uma nica mensagem. Este elemento <message>
possui um ou mais elementos <part> formando as partes reais da mensagem. Cada elemento
<part> refere-se a um tipo definido no elemento <types> do documento.
As referncias para os tipos das partes individuais so qualificadas por namespaces os
quais devem ser declarados no cabealho do documento XML. Abaixo segue fragmento do
cdigo WSDL deste projeto, onde temos quatro mensagens, onde as duas primeiras so do
tipo xsd: string que est declarada no cabealho:
<operation>:
38
<portType>:
39
2.1.3.2 Namespaces
Sendo WSDL um documento XML, seus namespaces devem ser definidos no seu
interior, incluindo o padro que cada documento WSDL deve utilizar que :
http://schemas.xmlsoap.org/wsdl. Na tabela 3 temos os principais namespaces usados em
documentos WSDL bem como seus prefixos.
Prefixo
WSDL
http
Mime
Soapenc
Soapenv
Xsd
Descrio
http://schemas.xmlsoap.org/wsdl/
Soap
Xsi
URI do namespace
Ser descrito na seo prximo 2.4, o uso de uma ferramenta para a gerao dinmica
de um documento WSDL.
40
Discovery direto:
Discovery indireto:
41
confivel, ele ainda permite avaliar servios de vrios provedores antes do compromisso para
usar um servio particular.
2.1.4.1 Especificaes UDDI (Padres)
Criou-se uma comunidade, chamada uddi.org[19], para a criao de especificaes e
padres de como um registro UDDI armazena dados e como ele pode ser acessado. So
quatro as principais especificaes (HENDRICKS)[7]:
42
Alm do registro pblico, h as seguintes modalidades de registro:
Privado:
Semi-privado:
Tambm pode ser conceituado como registro hbrido, onde um registro s pode ser
acessado com permisso de parceiros comerciais ou clientes, assim a empresa proprietria do
servio tem segurana em seus sistemas estratgicos ou vulnerveis em demais para serem
expostos ao pblico.
43
2.1.4.1 Arquitetura UDDI
Pode-se acessar todos os web services existentes a partir de apenas um dos domnios
pblicos; pois todos os diretrios UDDI pblicos duplicam as informaes publicadas em
qualquer outro domnio.
As informaes em um registro UDDI podem so compostas de trs tipos de entradas
(POTTS)[20] :
26
Data Universal Numbering System (Sistema Universal de Numerao de Dados), mantido pela Dun &
Bradstreet. Esse cdigo de nove dgitos um identificador universal de empresas, reconhecido
internacionalmente junto ao EDI (Electronic Data Interchange), bem como as transaes de comrcio
internacional. Identifca e conecta mais de 72 milhes de empresas internacionais, sendo reconhecido,
recomendado ou exigido pelas mais importantes organizaes, indstrias e associaes do mercado
internacional.
27
Taxonomia uma cincia de classificao, que lida com a descrio, identificao e classificao dos
organismos, individualmente ou em grupo.
44
Mtodos de Chamada:
o Find_business(),
Find_service(),
Get_businessDetail(),
Find_binding(),
Get_serviceDetail(),
Find_tModel(),
Get_bindingDetail(),
Get_tModelDetail(), Get_registeredInfo();
Mtodos de Publicao:
o save_business(),
save_service(),
save_binding(),
save_tModel(),
45
Codificao Base64
Em 1992 foi lanado este padro para envio de anexos em e-mail, que poderiam conter
imagens, udio, vdeo, vrios anexos na mesma mensagem, alm de arquivos binrios.
Seu funcionamento inclui os seguintes cabealhos:
o Content-Type: especifica o tipo e o subtipo dos dados que esto sendo
enviados no anexo, podendo ser: texto, imagem, udio, vdeo, mensagem,
multiparte (combinao de outros tipos em uma nica mensagem) e
aplicao (dados binrios).
o MIME-Version: especifica a verso do MIME.
o Content-Transfer-Encoding: especifica o tipo de codificao, podendo ser o
Base64
o Content-ID: especifica referncias de um anexo para outro;
o Content-Description: mensagem descritiva do anexo.
um padro alternativo para ser usado no lugar do MIME, sendo menos flexvel que
este, pois baseado num formato de mensagem mais simples. Foi desenvolvido
especificadamente para ser usado junto com o SOAP, acrescentando anexos a mensagens de
WS. Seu cabealho contm poucas informaes sobre os anexos, pois seus detalhes esto no
corpo do SOAP.
46
Uma mensagem DIME pode ter um ou mais registros DIME, cada um deles contendo
informaes sobre seu prprio contedo, usando Content-Type e subtipos MIME para
identificao dos registros.
Antes de cada registro, so usados para identificao de seus dados, bits num formato
fixo, tornando o processamento muito mais rpido do que o formato livre do MIME. No
exemplo abaixo temos uma mensagem DIME.
47
Atravs daqueles dados, um parser pode determinar exatamente o que so dados no
registro, onde eles comeam e terminam. Sendo que o primeiro registro contm a prpria
mensagem SOAP, os demais registros DIME viro a seguir, sempre usando o mesmo uuid,
assim o WS ter certeza da identidade do anexo.
Definida como especificao pela W3C[21], nessa proposta de projeto o receptor SOAP
determina com base na mensagem SOAP principal, se deve ou no processar os anexos; tanto
o DIME quanto o MIME podem ser usado, definindo trs possibilidades para o envio dos
anexos:
o DIME: Mensagem principal SOAP e o anexo podem ser encapsulados em
uma nica mensagem DIME, enviados atravs dos protocolos TCP ou
HTTP;
o MIME: Mensagem principal SOAP e o anexo podem ser encapsulados em
uma nica mensagem DIME, enviados atravs do protocolo HTTP;
o A mensagem principal SOAP pode ser trocada usando a vinculao http
sem qualquer encapsulao, e a transmisso do anexo usar uma requisio
separada. Assim envia-se apenas os dados descrevendo o anexo juntamente
com instrues sobre como realizar a transferncia.
Esta especificao traz um alerta quanto a envio de mensagens com anexos do tipo
application/post-crip e do tipo mdia message/external-body, pois os mesmos podem
conter vrus.
48
2.2 JAVA
O Java foi criado como parte de um grande projeto da Sun Microsystems, Inc., cuja
misso era desenvolver aplicativos complexos e avanados para aplicao em pequenos
dispositivos eletrnicos. ao mesmo tempo um ambiente e uma linguagem de programao
fortemente orientada a objetos. Atualmente, utilizado nos mais diversos ambientes: como
internet, dispositivos mveis, sistemas distribudos (O QUE JAVA) [15]
Sendo uma linguagem totalmente orientada a objetos, todos os elementos dos
programas so tratados como se fossem objetos. Os objetos podem ser variveis, sub-rotinas
ou a prpria aplicao. A idia que existe por trs das linguagens orientadas a objetos que
um objeto pode incluir tanto dados quanto cdigo: um objeto "nmero", por exemplo, poderia
incluir o valor do nmero e o cdigo necessrio para apresent-lo.
Os aplicativos em Java so compilados em um cdigo de bytes independente de
arquitetura. Esse cdigo de bytes pode ento ser executado em qualquer plataforma que
suporte um interpretador Java. O Java requer somente uma fonte e um binrio e, mesmo
assim, capaz de funcionar em diversas plataformas, o que faz dele um sonho de todos os que
realizam manuteno em programas.
O Java compilado e independente de plataforma: Um programa escrito em Java
precisa ser compilado antes de ser executado. O compilador traduz o cdigo-fonte e gera
arquivos objeto chamados arquivos de classe. Cada programa Java consiste da implementao
de uma nica classe. Depois de compilado, pode ser executado em qualquer plataforma onde
exista um sistema de tempo de execuo Java (runtime).
Ao utilizar o compilador Java - javac, voc estar compilando cdigo-fonte Java em
cdigo de bytes. Esses cdigos de bytes contm instrues independentes de mquina. Em
seguida, o interpretador do Java, tambm chamado de Java, e parte do ambiente de execuo
do Java, interpreta esses cdigos de bytes. Ao criar uma unidade de compilao do Java, cada
um dever ter um sufixo .java. Existem ferramentas IDE28, de uso livre que fazem essa tarefa
automaticamente como o Gel, o qual foi utilizado neste trabalho.
28
49
A linguagem Java pode ser considerada como uma plataforma de desenvolvimento,
uma vez que ela d suporte a trs diferentes reas de programao, conforme ilustrado na
figura 9 (Java 2 Software The Platforms) [22] :
J2ME (Java 3 Micro Edition): Plataforma Java com ferramentas especficas para o
desenvolvimentos de aplicativos que rodam em pequenos dispositivos mveis,
como: celular, smart cards e pagers.
50
cliente, basta rodar o programa e selecionar a opo udio/vdeo que est na aba aes, para
aceitar recebimento das imagens enviadas pelo servidor.
Figura 10 Axis
A arquitetura do Apache Axis foi construda sobre o mecanismo SOAP, tanto para
servidores como para clientes, escrito com a linguagem Java, embora na verso recente 1.2 j
tenha uma implementao no lado cliente na linguagem C++.
Como mecanismo ou engine SOAP tem as seguintes funcionalidades principais:
29
Definido como um conjunto de suporte para projetos de softwares, podendo incluir bibliotecas de cdigos
binrios prontos, suporte a programas.
51
Handlers (controladores):
uma sub-rotina de programa com uma tarefa especfica, sabe como responder a
determinados eventos, tornando-se controladores desses. No Axis um handler pode registrar a
mensagem, outro pode decriptograf-la, outro pode fazer as chamadas ao sistema legado. Os
handlers so chamados diretamente pelo Axis e no por um mtodo main().
Cadeias:
um tipo especial de handler que contm outros handlers, e estes podem ter outras
cadeias. A execuo das mesmas feita de forma ordenada (encadeamento dos componentes),
dessa forma o Axis tem o controle da mensagem entre cada componente do mecanismo. A
sequncia completa de handlers compreende trs cadeias: transporte, servio e global. Cada
uma com suas funes especficas. Como a cadeia de destino, que contm mais de um ponto
52
de entrada, tendo duas funes: receber e enviar mensagens atravs de um nico handler de
transporte (AXIS ARCHITECTURE GUIDE) [26].
Dispatcher (despachante):
o componente responsvel por chamar o servio web destino, que como j vimos,
pode ser implementado em qualquer linguagem de programao. O Axis descreve diferentes
dispatchers para vrios tipos de servios, os quais esto descritos numa estrutura XML
chamada de WSDD30. Utilizando o WSDD do Axis, a classe gerada ser um front-end para o
acesso, basta instanciar esta classe na aplicao cliente e chamar os mtodos pblicos do WS,
assim a aplicao cliente no precisar importar as bibliotecas do Axis.
Com o uso do WSDD, o dispatcher separa a lgica comercial da lgica do handler,
convertendo mensagens SOAP em objetos Java: determinando o mtodo a ser chamado e
verificando se os tipos dos argumentos de entrada codificados em XML combinam com os
tipos de parmetros solicitados do mtodo resultante e, depois, faz chamadas ao WS; isto
feito pelo componente RPCDispatcher.
Listener de Transporte:
Como mostrado na figura 10, entre o cliente e o Axis, tem-se o transporte o qual
possui duas cadeias: recepo e transmisso. Estas so servlets especiais que esto na espera
de uma mensagem SOAP e informam ao mecanismo o protocolo usado no transporte, como
abaixo especificado:
o Receptor de Transporte: Composto de uma cadeia com trs controladores:
Desserializador, Canonizador e Roteador. Essa cadeia recebe as mensagens
HTTP do cliente, e as prepara como uma fonte de entrada para anlise do
XML, este convertido num formato nativo de linguagem de programao,
no caso o Java, depois criado uma mensagem de sada para o dispatcher,
contendo informaes de onde e como retornar a mensagem de resposta.
o Remetente do Transporte: Essa cadeia consiste de apenas um controlador:
Serializador, o qual converte a mensagem num fluxo XML e encapsula os
detalhes do protocolo de rede, enviando as mensagens do http para a
camada de transporte da rede.
30
53
2.5 TOMCAT
um projeto de software livre e cdigo aberto desenvolvido pela Fundao Apache,
dentro do projeto Apache Jakarta[27]
Implementao de Referncia (RI) para as tecnologias Java Servlet e Java Server Pages (JSP).
O Tomcat um servidor de aplicaes Java para web, ou um Container Web; fazendo parte da
plataforma Java 2EE, abrangendo as tecnologias Servlet e JSP, incluindo outras tecnologias
de apoio, como JDBC DataSources31. O Tomcat tem a capacidade de atuar tambm como
servidor web/HTTP, ou pode funcionar integrado a um servidor web dedicado como o
Apache httpd ou o Microsoft IIS.[28] . Neste projeto est instalado como um simples servidor
web, como representado na figura 12; num contexto Axis, o qual chamar arquivos com
extenso jws (Java web services), que so os arquivos com cdigo fonte da aplicao
servidora WS.
31
54
55
Depois de escolhida a pasta de instalao, deve-se criar uma varivel de ambiente
denominada JAVA_HOME com o caminho de referncia para a pasta onde est instalado o
J2SE, conforme ilustrado na figura 14.
56
57
Ao prosseguir clicando-se no boto Next, temos mais uma importante janela, pois o
instalador procura onde est instalado a verso da JVM32 do Java e automaticamente traz
para a janela, conforme figura 18. Por isso instala-se primeiro a verso do Java e depois o
Tomcat. A seguir clica-se no boto Install para terminar a instalao do Tomcat.
32
parando
todas
encontram-se
na
as
pasta
classes
bin
do
inicializadas.
Tomcat.
Ambos
Nota-se
que
os
ao
58
executar o comando abre-se uma segunda janela no console, onde so
carregados os servios do Tomcat, com data e hora de incio de
carregamento das vrias classes, na figura 22 tem-se apenas a
primeira classe e a informao final do estado do servidor; ou
finaliza-se os servios, conforme ilustrado na figura 24.
59
Para certificar-se que o servio foi iniciado, abre-se o browser digitando a seguinte
URL: http://127.0.0.1:8080, dever ser exibida a tela da figura 25.
Administrao:
o Status: Permite monitorar o estado do servidor;
o Tomcat Administration: Permite criar, excluir e configurar Servios e seus
elementos internos do Servidor Tomcat, bem como Recursos e
Autorizaes.
o
60
que est dentro da pasta weapps para dentro da pasta webapps do Tomcat, criando dessa
maneira um contexto web para o axis. A estrutura de diretrios deve ficar conforme figura 26.
C:\axis-1_1\lib\axis-ant.jar;
C:\axis-1_1\lib\axis.jar;
C:\axis-1_1\lib\commons-discovery.jar;
C:\axis-1_1\lib\commons-logging.jar;
C:\axis-1_1\lib\jaxrpc.jar;
C:\axis-1_1\lib\log4j-1.2.8.jar;
C:\axis-1_1\lib\saaj.jar;
C:\axis-1_1\lib\wsdl4j.jar;.;
61
Agora o servidor Tomcat deve ser reiniciado para que o framework Axis seja iniciado.
Para testar esse contexto Axis, abre-se o browser digitando a seguinte URL:
http://127.0.0.1:8080/axis/, dever ser exibida a tela da figura 28.
Validate: serve para validar a instalao: clicando nele ser apresentado uma lista
de componentes necessrios ("Needed Components"). Caso algum desses no seja
encontrado, ele ir solicitar a instalao; como por exemplo o componente JAF
1.02
(activation.jar),
qual
deve
ser
instalado
em:
C:\Arquivos
de
View: serve para visualizar os web services j instalados: clicando nele, sero
exibidos dois web services e, clicando no link (wsdl), voc ver o arquivo de
especificao de ambos. Se, ao clicar, no aparecer nenhuma informao, no se
preocupe, alguns navegadores no exibem XML, outros exibem como HTML,
sendo necessrio abrir o cdigo fonte da pgina para ver o seu contedo. Mas ele
estar l, e funcionando.
62
3.1.4 Instalando e configurao do IDE Gel 1.0
Aps o download do arquivo gel.exe, basta seguir os passos do arquivo instalador
como na figura 29:
63
Na aba repositrio de classes figura 31:
3.2.1 Pr-requisitos
Primeiramente foi testado o projeto feito por Rubens da Rocha. O qual, para poder
rodar, tinha que ter as seguintes configuraes e instalaes:
64
1) Instalao Driver de Acesso da Porta Paralela:
Por questes de segurana as verses do windows NT/2000 e XP no permitem o
acesso direto ao hardware, necessrio um driver que "converse" com o ncleo (kernel) do
sistema operacional para ter acesso s portas fsicas do computador.
Nas verses do windows 95/Me e 98 no h restrio e o acesso pode ser direto,
portanto, no h necessidade do uso de drivers. Utilizou-se o driver Userport[30] que aps o
download s executar o arquivo userport.exe e clicar no boto start, aparecendo a janela da
figura 32:
65
3.2.2 Rodando projeto original
Aps essas configuraes pode-se rodar o programa servidor figura 33, que fica
escutando a porta 7777 e aps o cliente fazer a conexo figura 34; tem-se a conexo aceita,
podendo ser aplicado os movimentos no brao figura 35, atravs dos botes (em verde). O
mesmo tem dois motores de passo, um para controle no eixo X com giro de aproximadamente
300 e outro para controle no eixo Y com giro completo de 360; ambos podendo ter inverso
de rotao.
66
Eixo Y
Eixo X
67
3.2.3 Criando Servidor WS: Classe WebComando
Para a criao do WS, fez-se uma adaptao do cdigo do servidor original, ficando da
seguinte maneira:
68
Nota-se na linha 38 o mtodo que ser chamado pela aplicao cliente: WebComando,
o qual receber um parmetro (comando), este mtodo abrir uma thread que ser inicializada
(t.start); na prxima linha chama-se o mtodo Movimento, passando o parmetro vindo do
cliente (ao). Este mtodo ir alterar as variveis index e Action, as quais sero usadas no
mtodo run da thread (linha 70), movimentando dessa maneira o brao eletrnico. Colocou-se
o comando return(comando) para que o comando executado seja retornado ao browser
(somente para teste).
69
70
Para que essa classe possa ser compilada corretamente, deve-se seguir as mesmas
configuraes do projeto original; tendo um diretrio como o mostrado na seo 3.2.1.
3.2.4 Transformando Classe WebComado em uma Classe WS
Distribuio Instantnea.
Uma vez criado a classe WebComando deve-se copiar o arquivo WebComando.java
(fonte), juntamente com o pacote ParallelPort e o arquivo parport.dll, para dentro do contexto
Axis que foi criado dentro do Tomcat. A estrutura de diretrio de arquivos ficar como
mostrado na figura 36.
http://localhost:8080/axis/WebControle.jws
71
O Axis ir automaticamente localizar o arquivo WebControle.jws, compilar a classe e
converter as chamadas do SOAP para as chamadas Java da classe WebControle. Tem-se
Figura 37 WS disponvel
72
WebControle.wsdl. Este ser o arquivo enviado ao cliente, para que o mesmo possa gerar os
descritores e criar a aplicao de acesso ao servio web.
Para gerar as classes Java a partir dos descritores usa-se uma ferramenta do Axis,
denominado Wsdl2java. Dessa maneira, o cliente do WS pode gerar, a partir do wsdl, as
classes de maneira dinmica. A figura 38 ilustra como deve ser feita a chamada de comando,
deve-se estar dentro da pasta que foi criado o arquivo WebControle.wsdl. Aps o comando
ser executado o Axis criou automaticamente a estrutura de diretrio WebComando, contendo
as classes Java, deploy e undeploy.wsdd.
Via http;
Acesso direto;
Utilizando pacote.
73
3.3.1 Via HTTP :
URL do servio;
Mtodo a ser chamado;
Nome do parmetro;
Valor do parmetro.
A figura 39 mostra o acima exposto, nota-se que temos um valor retornado pelo WS,
pois o mesmo possui um mtodo que retorna o parmetro enviado pelo cliente. Neste caso, foi
enviado um parmetro = Cima, o qual far com que o WS envie um comando para o brao
eletro-mecnico, fazendo com que o mesmo execute um movimento no sentido horrio no seu
eixo Y, at que seja enviado um parmetro = Para.
74
3.3.2 Acesso Direto:
Nesta opo, para acessar o servio web, desenvolveu-se um cliente em Java, como
mostrado abaixo:
Deve-se importar os mtodos Call e Service da classe client do Axis, para poder
implementar a chamada ao servio WS (linha 14 instanciando um objeto call), setando: o
local do WS (linha 16), a funo a ser executada (linha 18) e o parmetro (linha 20). Para
passar o parmetro, antes de executar o aplicativo, abre-se no menu Compilar do Gel, escolhese a opo Parmetro, e aps a abertura da janela digita-se o mesmo. Esse parmetro ser
armazenado na varivel args[O], linha 20.
Na figura 40 temos o cliente executando, com o brao eletro-mecnico tendo um
movimento no sentido anti-horrio do seu eixo Y, pois foi passado o parmetro Baixo.
75
76
CAPTULO 4 - CONCLUSO
4.1 Resultados
Nas experincias realizadas obteve-se xito na manipulao do brao eletro-mecnico,
tanto no acesso direto via http (browser) quanto no acesso via aplicao cliente (usando a
linguagem Java).
Algumas ressalvas foram encontradas quanto ao dispositivo fsico do brao eletromecnico, foi sua instabilidade quanto aos movimentos; pois quando enviado um comando
Cima pela aplicao cliente, tinha-se um movimento no eixo Y no sentido horrio. Caso
fosse enviado um comando Baixo logo em seguida, a agulha (fixa no eixo Y) ficava
oscilando, querendo ter um movimento no sentido anti-horrio (na teoria seria o movimento
correto), mas o mesmo no ocorria, dando a impresso que tinha-se dois comandos
simultneos a serem executados: sentido horrio e anti-horrio. Ou seja, aps uma comando
qualquer de movimentao tanto do eixo X como do eixo Y, deve ser aplicado somente o
comando Para, para depois aplicar um movimento no sentido contrrio ao primeiro.
O exposto no pargrafo anterior ocorreu tanto no acesso via browser, como tambm
no acesso da aplicao cliente feito em Java. Optou-se tambm em fazer uma aplicao
cliente na linguagem Delphi, e os resultados foram exatamente iguais.
Apesar dessa peculiaridade, o projeto deixou claro que essa recente tecnologia de Web
Service veio para permanecer, sendo uma alternativa para aplicaes distribudas, tendo
algumas vantagens como interoperabilidade de: sistemas operacionais, plataforma de hadware
e linguagem de programao.
77
Outra dificuldade e esta foi mais complicada de solucionar, pois aps o WS pronto, na
tentativa de enviar um comando tanto pelo browser (http) quanto pela aplicao cliente, o
dispositivo do brao eletro-mecnico, simplesmente no respondia a nenhum comando,
permanecendo esttico, sem nenhum movimento. Aps a checagem de todos os prrequisitos, como: o Userport ativado, servidor TomCat rodando, parmetros enviados
corretos, inclusive porque tinha-se o retorno do WS no browser, de qual foi o parmetro
enviado (return). Sendo que aparentemente estava tudo em ordem, resolveu-se verificar um
grande aliado para o programador: um arquivo de log gerado pelo Tomcat, (o mesmo
encontra-se no caminho C:\Arquivos de programas\Apache Software Foundation\Tomcat
5.0\logs); esse arquivo s gerado quando usa-se o Tomcat atravs do aplicativo Monitor
Tomcat. Observou-se uma mensagem de erro: O servidor Tomcat no estava achando a
biblioteca parport.dll, apesar do arquivo existir dentro do contexto Axis do Tomcat.
Utilizou-se o mtodo da tentativa-erro: gravou-se primeiramente o arquivo parport.dll
na pasta /bin do Tomcat (sem sucesso), depois na pasta /common/lib (sem sucesso) e ao ser
gravado na pasta /Server/lib, obteve-se o movimento no brao eletro-mecnico e no mais
apareceu a mensagem de erro no arquivo stdout.log.
A ltima dificuldade observou-se na tentativa de usar uma cmera digital para enviar
um vdeo, mostrando a movimentao do dispositivo, para a aplicao cliente. A cmera no
conseguia capturar a velocidade dos movimentos do brao. Neste caso, a soluo seria usar
uma cmera com captura de um nmero maior de frames por segundo.
78
REFERNCIAS
79
22. JAVA 2 SOFTWARE THE PLATAFORMS. http://java.sun.com/java2/whatis/ acessado
dia 19/08/05.
23. VDEOCONFERNCIA
http://www.interdidactic.com.br/Produtos.php?Produto=4&GUID=5812c16c992878a278a
c608daa4174ee acessado dia 22/08/05.
24. APACHE. http://www.apache.org acessado dia 22/08/05.
25. AXIS. http://en.wikipedia.org/wiki/Framework acessado dia 22/08/05.
26. AXIS ARCHITECTURE GUIDE.
http://ws.apache.org/axis/java/architecture-guide.html#ArchitecturalOverview
acessado
dia 24/08/05.
27. APACHE TOMCAT. http://jakarta.apache.org/tomcat/ acessado dia 26/08/05.
28. TUTORIAL TOMCAT. http://www.mhavila.com.br/topicos/java/tomcat.html acessado
dia 26/08/05.
29. AXIS ENGINE IN WEB CONTAINER.
26/08/05.