Professional Documents
Culture Documents
TJAVWSER
Novembro/2010
Sumrio
1. Integrao.................................................................................. 1
Objetivos....................................................................................................................................2
Introduo.................................................................................................................................3
Desafios da integrao.........................................................................................................4
Diferentes tipos de integraes.............................................................................................4
Integrao em nvel de dados................................................................................................5
Integrao em nvel de sistema.............................................................................................5
Integrao em nvel de processos de negcio.......................................................................6
Integrao em nvel de apresentao....................................................................................7
Integrao B2B (Business-to-Business)...............................................................................8
Infraestrutura para integraes......................................................................................10
Comunicao......................................................................................................................10
Transformao....................................................................................................................10
Business Intelligence (BI)...................................................................................................10
Transaes...........................................................................................................................11
Segurana............................................................................................................................11
Ciclo de vida.......................................................................................................................11
Nomenclatura......................................................................................................................11
Escalabilidade.....................................................................................................................11
Gerenciamento....................................................................................................................12
Tecnologias para integraes...........................................................................................13
Acesso a banco de dados....................................................................................................13
Message-Oriented Middleware (MOM).............................................................................13
Remote Procedure Call (RPC)............................................................................................14
Object Request Brokers (ORB)..........................................................................................15
Servidores de aplicao......................................................................................................16
Web Services.......................................................................................................................17
Enterprise Service Buses (ESB).........................................................................................18
As empresas hoje em dia..................................................................................................19
Trocando os sistemas existentes....................................................................................20
Exerccios.................................................................................................................................21
2. SOA (Service Oriented Architecture)...........................................23
Objetivos..................................................................................................................................24
Conceitos e princpios de SOA.........................................................................................25
Mudana de paradigma: de aplicaes independentes ao servio......................................26
Orientao a servio............................................................................................................26
Servios baseados em componentes...................................................................................26
A internet simplificando os servios remotos.....................................................................27
Consumindo servios..........................................................................................................27
Vantagens e desvantagens...................................................................................................28
Aplicaes...........................................................................................................................29
Exerccios.................................................................................................................................30
3. Web Services............................................................................33
Objetivos..................................................................................................................................34
Integrao...............................................................................................................................35
T@rgetTrust Treinamento e Tecnologia
Integra
II
Integra
Fixando conceitos...............................................................................................................82
JAX-WS..............................................................................................................................82
JAX-WS: Consumindo o Servio.......................................................................................85
Apache Axis 1.x: Consumindo o Servio...........................................................................86
Apache Axis 2.x..................................................................................................................87
Apache Axis 2.x: Consumindo o Servio...........................................................................87
Netbeans IDE......................................................................................................................88
Netbeans IDE: Consumindo o Servio...............................................................................90
Exerccios.................................................................................................................................91
Espao para anotaes........................................................................................................92
6. Comunicao via SOAP..............................................................93
Objetivos..................................................................................................................................94
O que SOAP?.......................................................................................................................95
Por que SOAP?........................................................................................................................96
Bloco de estrutura SOAP....................................................................................................97
Exemplo de mensagem SOAP..........................................................................................99
O SOAP Request.................................................................................................................99
O SOAP Response..............................................................................................................99
SAAJ - SOAP with Attachments API for Java..............................................................100
Mensagens........................................................................................................................100
Estrutura do XML.............................................................................................................100
Mensagem sem anexos.....................................................................................................100
Mensagem com anexos.....................................................................................................101
Conexes...........................................................................................................................102
Exemplo completo de chamada....................................................................................104
Dica de construo da chamada SOAP.............................................................................105
Exerccios...............................................................................................................................109
Espao para anotaes......................................................................................................110
7. Segurana com Web Services...................................................111
Objetivos................................................................................................................................112
Introduo..............................................................................................................................113
Segurana em web service.............................................................................................114
Segurana em nvel de transporte.....................................................................................114
Segurana em nvel de XML............................................................................................115
Questes a serem consideradas...................................................................................116
Vantagens da segurana na camada de mensagem............................................117
Especificaes e iniciativas atuais...............................................................................118
Especificaes W3C.........................................................................................................118
Especificaes OASIS......................................................................................................119
Especificaes JCP...........................................................................................................119
Especificaes WS-I.........................................................................................................120
WS-Security...........................................................................................................................121
Exerccios..........................................................................................................................122
Espao para anotaes......................................................................................................123
Apndice 1: Estudos Complementares...........................................125
Diferena entre JAX-RPC e JAX-WS................................................................................126
Diferena entre Document/Literal e RPC/Literal.....................................................127
T@rgetTrust Treinamento e Tecnologia
III
Integra
Referncias Bibliogrficas............................................................129
IV
Integra
1. Integrao
Integrao
Objetivos
Integrao
Introduo
A crescente necessidade de disponibilidade e acesso s informaes
caracteriza um desafio para o desenvolvimento de aplicaes. Sistemas standalone no conseguem mais atender s necessidades de crescimento das
empresas atualmente. A maioria das companhias ainda tm sistemas legados,
desenvolvidos utilizando diferentes arquiteturas e tecnologias. Muitos destes
sistemas, no foram concebidos para proporcionarem integrao. Seria
extremamente custoso para as empresas reescrever ou trocar todos seus
sistemas da noite para o dia.
Alm disto, empresas precisam, sem sombra de dvida, aderir a novos
sistemas de tempos em tempos. Novas solues, normalmente, so baseadas
em novas e modernas arquiteturas, que acabam diferindo significantemente
daquela utilizada nos sistemas legados. Estas novas aplicaes tambm tm
de se integrar s aplicaes existentes, para formar um conjunto nico e coeso
de dados que podem ser aproveitados entre si.
Hoje, a integrao de aplicaes uma tarefa extremamente difcil, talvez a
mais complicada de ser encarada, no que diz respeito ao desenvolvimento de
aplicaes em uma empresa. Para tentar solucionar estes objetivos de
integrao, muitas metodologias, tcnicas e tecnologias foram desenvolvidas
nos ltimos anos, desde a integrao de aplicaes ponto-a-ponto, quanto ao
gerenciamento de processos de negcio baseado em arquitetura orientada a
servios.
Integrao
Desafios da integrao
A habilidade de instantaneamente acessar informaes vitais que podem estar
armazenadas em uma variedade de diferentes aplicaes pode influenciar o
sucesso de uma empresa. Para as empresas, a facilidade de acesso
informao, de forma que evite numerosas tarefas manuais, ou que envolvam
muitos funcionrios, muito importante. Funcionrios no devem ter de trocar
de sistema em sistema para que consigam realizar seus trabalhos, ou mesmo,
entrar com a mesma informao em diversos sistemas. O ideal seria possuir
sistemas bem integrados, garantindo o suporte aos processos de negcio de
ponta a ponta.
Muitos gestores de TI no esto familiarizados com a complexidade escondida
por trs da integrao de processos. s vezes, at os funcionrios de TI,
arquitetos e desenvolvedores, no compreendem as armadilhas atrs das
integraes. E o mais importante: os gestores podem no compreender
que uma integrao relaciona-se com a empresa como um todo, e no
somente com o departamento de TI.
Integraes devem ser consideradas como as mais importantes prioridades
estratgicas, principalmente porque solues inovadoras demandam
integraes entre diversas reas do negcio, dados da empresa e aplicaes.
Informaes integradas aumentam a vantagem competitiva com o acesso
unificado e eficiente informao. Integraes bem feitas facilitam a busca por
informaes na hora da necessidade por uma tomada de deciso, por exemplo.
Integrao
Integrao
Integrao
Integrao
Integrao
em nvel de dados
em nvel de sistema
em nvel de processo de negcio
em nvel de apresentao
B2B (Business-to-Business)
Integrao
Data
Data
Server
Server
Data
Data
Data
Server
Server
Integrao
Integrao
interfaces de alto nvel, torna-se crucial que o usurio tenha uma nica viso
da informao como um todo. Tendo o usurio que ficar trocando de aplicao
em aplicao legada, pode ocorrer que informaes sejam perdidas;
conhecimento seja perdido.
Integrao em nvel de apresentao resulta em um sistema que prov uma
camada nica de visualizao, onde os usurios podem acessar as
funcionalidades dos sistemas de forma integrada. Do ponto de vista da
usabilidade do usurio, ele no toma conhecimento de que funcionalidades de
outras aplicaes esto sendo executadas devido a sua interao. Assim, a
camada de apresentao fica desacoplada e no toma conhecimento dos
detalhes das aplicaes existentes.
Com o desenvolvimento de uma camada de apresentao unificada,
escondem-se as aplicaes legadas, mas suas funcionalidades continuam
sendo executadas. Desta forma, melhora-se a eficincia do usurio final e se
fornece uma maneira de se trocar partes dos sistemas legados no futuro, sem
influenciar outras partes do sistema.
Integrao
Integrao
Decolar.com http://www.decolar.com
Integrao
Comunicao
A principal responsabilidade dos servios de comunicao prover a abstrao
dos detalhes da comunicao. Ela fornece uma transparncia para acesso
remoto aos sistemas e unifica a visibilidade destes. Ela garante que os
desenvolvedores no tenham a preocupao de lidar com a comunicao de
baixo nvel.
Diferentes tipos de middlewares fornecem diferentes camadas de servios. As
mais comumente utilizadas so as tecnologias de acesso aos bancos de dados,
como o JDBC (Java Database Connectivity), que fornece uma camada de
abstrao para acesso a diferentes bancos de dados.
Transformao
Transformao das estruturas de dados, suas representaes e tecnologias
sempre foram muito importantes. No passado, pequenos programas que liam
uma informao da origem e a transformavam em outro formato no destino,
geralmente, resolviam os problemas relacionados s integraes (ex.
mainframe para baixa plataforma). Com o advento de linguagens de
marcao, como o XML (Extensible Markup Language), que acabou se
tornando a linguagem padro para troca de informaes, as transformaes
alcanaram um novo nvel de maturidade.
Integrao
Transaes
A integrao da infraestrutura deve proporcionar que as operaes que
envolvam o negcio ocorram de forma transacional. Entretanto, devem ser
possveis chamadas a diversas operaes em diferentes sistemas. Deve
suportar o modelo de atomicidade ACID (atomicity, consistency, isolation,
durability).
Em outras palavras, a aderncia ao modelo transacional deve garantir que
qualquer operao executada em uma ou mais aplicaes (que causem a
mudana de estado ou permanente mudana nos dados - persistncia)
ocorram com garantia de consistncia.
Segurana
A infraestrutura de integrao deve fornecer maneiras de restringir o acesso
ao sistema. Esta deve preocupar-se tambm, com a encriptao do canal de
comunicao, autenticao, autorizao e auditoria.
Ciclo de vida
A infraestrutura de integrao deveria prover formas de controlar o ciclo de
vida de todas as aplicaes envolvidas. Deveria permitir que aplicaes
existentes pudessem ser trocadas uma a uma, ou at mesmo em partes, sem
que houvesse influncia em qualquer parte do todo.
Nomenclatura
A unificao da nomenclatura dos servios vai garantir a transparncia na
localizao da implementao e garantir a troca futura de um recurso por
outro, se necessrio. Web services so grandes exemplos de servios que
devem ser expostos com cuidado em sua nomenclatura.
Escalabilidade
A infraestrutura de integrao deve ser montada pensando-se em
escalabilidade. Deve acessar as informaes de forma a prover o acesso
concorrente s aplicaes. Deve incorporar solues que garantam acesso
suficiente demanda esperada, e onde possa ser possvel expandi-la conforme
demanda.
A infraestrutura de integrao, no entanto, no pode ser responsabilizada por
ms arquiteturas da aplicao.
Integrao
Gerenciamento
Deve-se haver formas de gerenciar a infraestrutura de integrao. A camada
de gerenciamento deve prover mtodos e ferramentas para que os servios
sejam gerenciados. Deveria prover tambm uma forma simples de
configurao e gerenciamento das verses. O gerenciamento remoto garantiria
gerncia de infraestrutura de que esta seja administrada off-site.
Integrao
Integrao
Integrao
Integrao
Servidores de aplicao
Servidores de aplicao gerenciam todas ou a grande maioria das interaes
entre a camada de cliente e a camada de persistncia. Eles fornecem uma
coleo de servios middleware, junto com o conceito de gerenciamento do
ambiente onde os componentes de regra de negcio so implantados (deploy):
o container.
Na grande maioria dos servidores de aplicao, pode-se encontrar suporte aos
web services, ORB, MOM, gerenciamento de transao, segurana,
balanceamento de carga e gerenciamento de recursos. Abaixo seguem alguns
dos servidores de aplicao de mercado:
Integrao
Web Services
Web services so o que h de mais novo em questo de tecnologia distribuda.
Eles fornecem a fundamentao tecnolgica para que seja alcanada a
interoperabilidade entre aplicaes usando diferentes plataformas, sistemas
operacionais e linguagens de programao. Do ponto de vista de tecnologia,
web services so os prximos passos na evoluo das arquiteturas
distribudas. So similares aos seus predecessores, mas tambm diferem deles
em diversos aspectos.
Web services so as primeiras tecnologias distribudas a serem suportadas
pela grande maioria de fornecedores. E alm disto, foi a primeira tecnologia
que preencheu todos os requisitos do universo de promessas de
interoperabilidade existentes. As especificaes fundamentais so que os web
services so baseados em SOAP (Simple Object Access Protocol), WSDL (Web
Services Description Language) e UDDI (Universal Description, Discovery and
Integration). SOAP, WSDL e UDDI so baseados em XML, fazendo com que o
protocolo da mensagem do web service seja possvel de ser lido pelo ser
humano.
Da perspectiva de arquitetura, web services introduzem diversas mudanas
importantes se comparada com as arquiteturas anteriores.
Operaes em web services so baseadas na troca de mensagens XML. Elas
so colees de entradas, sadas e mensagens de erro. As combinaes de
mensagens definem o tipo de operao.
Web services fornecem suporte a comunicao sncrona e assncrona. Eles
utilizam padres dos protocolos da internet, como o HTTP (Hyper Transfer
Protocol) e MIME (Multipurpose Internet Mail Extensions). Sendo assim,
comunicaes atravs da internet e de firewalls costumam ser menos
problemticas.
Existem tambm, desvantagens no uso dos web services. Uma delas a
performance, a qual no se compara a uma arquitetura distribuda que se
utiliza de protocolos de comunicao binrios. Alm de no oferecer QoS
(Quality of Service). Web services sero o foco de estudo desta apostila.
Na seguinte URL, pode-se conferir todo o embasamento tcnico relacionado
arquitetura dos web services, segundo a W3C (o consrcio World Wide Web
uma comunidade internacional que desenvolve padres com o objetivo de
garantir o crescimento da web): http://www.w3.org/TR/ws-arch/.
Integrao
Integrao
Integrao
Integrao
Exerccios
1. Para voc quais so os desafios das integraes hoje em dia? Cite exemplos.
2. Comente o porqu dos web services serem umas das mais importantes
tecnologias para integraes.
3. Como so as empresas hoje em dia, com relao aos seus softwares?
Integrao
Objetivos
Orientao a servio
Orientao a servio contm grande importncia nas funcionalidades de
interface com o negcio. A noo de importncia destas interfaces no de
toda nova. Toda aplicao bem elaborada contm mdulos de negcio bem
estruturados, e cada mdulo em cada aplicao ter mtodos/operaes bem
elaborados. Hoje, nas mais variadas plataformas (ex. JAVA EE, CORBA e .NET)
existem design patterns, como o Faade, que fornecem estas funcionalidades
e garantem um desenvolvimento coeso.
Consumindo servios
Uma vez que os servios estejam disponveis atravs da plataforma SOA, o que
pode ser feito com eles? Consumir os servios atravs de uma aplicao
cliente.
Consumir significa usar o servio invocar o servio de outra aplicao
como parte da lgica normal deste programa. Digamos numa aplicao de
ERP, onde os detalhes de um cliente sejam necessrios, pode-se fazer uma
chamada ao servio que fornece essas informaes (ex. CRM), e este retornar
com os detalhes solicitados.
Vantagens e desvantagens
A arquitetura SOA possui diversas vantagens que contribuem decisivamente
para a integrao de processos de negcio, conforme a seguir:
Este tpico no visa explorar a fundo todas as possibilidades dos servios SOA
e web services, mas tem apenas um apanhado geral sobre algumas vantagens
e desvantagens da sua utilizao.
Aplicaes
Integrao de sistemas:
Em quase todas as organizaes possumos cenrios complexos, em
ambientes completamente heterogneos, com dezenas de aplicaes
desenvolvidas para desempenhar papis distintos. Um grande problema que o
SOA se prope a resolver facilitar a integrao desses componentes da
organizao. Seguindo os preceitos desse novo paradigma arquitetural,
facilmente conseguiramos integrar os sistemas sem ter quer fazer
modificaes internas, apenas disponibilizando-os como servios.
Reutilizao de sistemas legados atravs de chamadas remotas:
No desenvolvimento de novas solues, quase sempre nos deparamos com
sistemas antigos que no podem deixar de ser utilizados, nem mantidos, so
os chamados sistemas legados. Esses sistemas tambm podem possuir uma
srie de implementaes prontas para o novo sistema a ser construdo e
devem ser reaproveitadas. Com a implementao do SOA possvel
disponibilizar maneiras de acessar os sistemas legados atravs de chamadas
remotas.
Disponibilizao de informaes corporativas a usurios ou sistemas que
extrapolam as fronteiras corporativas:
B2B (business-to-business); negcios entre empresas, envolvendo produtos,
servios ou parcerias. Este termo mais usado em relao aos sites que
promovem este tipo de comrcio, oferecendo toda a praticidade e
infraestrutura necessria, cobrando em troca uma mensalidade ou comisso
sobre as transaes.
Exerccios
1. Explique com suas palavras o conceito de SOA.
2. Cite vantagens e desvantagens do paradigma SOA.
3. Voc entende SOA como algo que pode ajudar a sua empresa? De que
forma?
3. Web Services
Objetivos
Integrao
A tecnologia de web services tem um papel importante na aplicao dos
conceitos de SOA. Esta tecnologia baseada em padres abertos, como:
XML
SOAP
WSDL
UDDI
Self-Contained
Web services so self-contained (independentes) no sentido deles no
requisitarem que qualquer componente seja instalado no lado do cliente. No
servidor, precisa-se meramente de um componente capaz de fornecer
Servlets, um container EJB ou o runtime .NET. Quando um servio instalado e
fica pronto para o uso, o cliente pode consumi-lo sem a necessidade da
instalao de softwares em sua mquina.
Self-Describing
Web services so self-describing (auto-descritivos). Uma interface para um
servio publicada atravs de um documento WSDL. Um documento WSDL
define o formato da troca de mensagem e os tipos de dados usados. Para
consumir o servio, o cliente necessita conhecer apenas sobre o
formato e contedo da chamada e da resposta da mensagem.
Modular
Web services fornecem diversas abstraes nos componentes de tecnologias
existentes baseados em J2EE, CORBA, DCOM, entre outros. Usando essa
diversidade de tecnologias, os componentes so criados. O web service
compe estes componentes para oferecer o servio ao cliente. A interface aos
componentes no exposta aos clientes. Isto resulta em um desenvolvimento
modular de software, resultando na criao de uma viso mais abstrata do
servio de negcio.
Dinmico
Web services podem ser descobertos e consumidos em tempo de execuo,
sem a necessidade de um tempo de compilao. Na maioria das tecnologias, o
cliente precisa apenas conhecer o componente de interface.
Exerccios
1. Como voc v os web services auxiliando nos processos de integrao na
empresa em que trabalha?
2. Cite 03 benefcios no uso dos web services.
3. Voc v alguma desvantagem no uso dos web services? Qual?
4. Por que os web services podem ser teis na integrao de software legado?
Explique.
Web Services
Objetivos
Web Services
Necessidades bsicas
A seguir so consideradas as ferramentas e APIs necessrias para o
desenvolvimento de web services e para execuo dos exerccios propostos
pela apostila. Lembrete: nem todos os arquivos JAR (que compe as APIs) so
utilizados pelo projeto que estar em estudo.
soapUI
soapUI (http://www.soapui.org/) uma ferramenta de cdigo aberto escrita em
Java cuja principal funo consumir e testar web services. considerada a
ferramenta lder neste segmento, com mais de 2 milhes de downloads, a
mais utilizada para testes SOA no mundo.
Este software requer um detalhamento maior, visto que para que os exerccios
desta apostila sejam bem testados e compreendidos, faz-se necessrio
entender o funcionamento da ferramenta soapUI. Ela ser a responsvel por
fazer as chamadas de REQUEST e RESPONSE a um web service. Permitindo
assim, que sejam feitas requisies sem o uso de uma API cliente de web
service.
A seguir, tm-se as telas bsicas de configurao para criao de chamadas a
um servio deste software:
Web Services
Web Services
Web Services
Apache Tomcat
O Apache Tomcat (http://tomcat.apache.org/) uma implementao de
software de cdigo aberto para as tecnologias de Java Servlet e JavaServer
Pages. Est em produo hoje em larga escala, em aplicaes web de misso
crtica em uma grande diversidade de indstrias e organizaes.
Apache OpenEJB
Apache OpenEJB (http://openejb.apache.org/) uma implementao freeware,
embarcada e leve do EJB 3.0, que pode ser utilizada com um servidor
standalone ou integrada a um Tomcat, JUnit, TestNG, Eclipse, IntelliJ, Maven,
Ant e qualquer IDE ou aplicao. OpenEJB est includo no Apache Geronimo,
IBM WebSphere Application Server CE, e no Apple's WebObjects.
Web Services
JAX-WS
Descrio
O Java API for XML Web Services (https://jax-ws.dev.java.net/) uma API Java
para criao de web services. Faz parte da plataforma do Java EE da Sun
Microsystems. Como as outras APIs do Java EE, JAX-WS usa anotaes,
introduzidas no Java SE 5, para simplificar o desenvolvimento e o deploy dos
clientes de web service e endpoints.
Necessidades
API do JAX-WS contendo os seguintes arquivos JAR:
activation.jar
jaxws-rt.jar
FastInfoset.jar
jaxws-tools.jar
gmbal-api-only.jar
jsr173_api.jar
http.jar
jsr181-api.jar
jaxb-api.jar
jsr250-api.jar
jaxb-impl.jar
management-api.jar
jaxb-xjc.jar
mimepull.jar
jaxws-api.jar
policy.jar
resolver.jar
saaj-api.jar
saaj-impl.jar
stax-ex.jar
streambuffer.jar
woodstox.jar
Arquitetura
Segue a estrutura dos arquivos bsicos necessrios e a sua descrio:
Web Services
Mensagem.java e OlaMundo.java
Classes Java que contm as regras de negcio do web service.
web.xml
Configurao do mapeamento do servlet WSServlet para a URL do servio.
sun-jaxws.xml
Mapeamento dos endpoints, suas URLs e classe Java de implementao.
build.xml
XML Apache Ant responsvel pelo deploy da aplicao.
Web Services
Mensagem.java
@WebService
public class Mensagem {
private static ArrayList<Properties> lista;
public Mensagem() {
lista = new ArrayList<Properties>();
}
@WebMethod
public void adicionaMensagem(@WebParam(name = "remetente") String
remetente, @WebParam(name = "mensagem") String mensagem) {
Properties prop = new Properties();
prop.setProperty("DATA", new SimpleDateFormat("dd/MM/yyyy
HH:mm:ss").format(new Date()));
prop.setProperty("REMETENTE", remetente);
prop.setProperty("MENSAGEM", mensagem);
lista.add(prop);
}
@WebMethod(exclude = true)
public static ArrayList<Properties> getListaMensagens() {
return lista;
}
Web Services
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<listener>
<listenerclass>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listenerclass>
</listener>
<servlet>
<servlet-name>MinhaMensagem</servlet-name>
<servletclass>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MinhaMensagem</servlet-name>
<url-pattern>/mensagem</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>MeuOlaMundo</servlet-name>
<servletclass>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MeuOlaMundo</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
</web-app>
sun-jaxws.xml
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'>
<endpoint
name='Hello'
implementation='com.tt.webservice.OlaMundo'
url-pattern='/hello'
/>
<endpoint
name='Mensagem'
implementation='com.tt.webservice.Mensagem'
url-pattern='/mensagem'
/>
</endpoints>
Web Services
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@page import="com.tt.webservice.Mensagem"%>
<%@page import="java.util.Properties"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Pgina de Mensagens</title>
<meta http-equiv="refresh" content="5" />
</head>
<body>
<%
for(Properties prop : Mensagem.getListaMensagens()) {
out.println(prop.get("DATA") + " - " + prop.get("REMETENTE") + " - " +
prop.get("MENSAGEM"));
out.println("<br />");
}
%>
</body>
</html>
Para verificarmos se os servios esto disponveis para serem consumidos,
podemos
acessar
o
contexto
criado
ws-jaxws-tomcat
(ex.
http://localhost:8080/ws-jaxws-tomcat/mensagem?wsdl) e identificar se a
pgina carrega sem erro. Se abrir corretamente, todos os servios foram
publicados e esto prontos para serem consumidos.
Para testarmos o funcionamento dos web services e o resultado das
mensagens, utilizaremos os seguintes endereos de WSDL (esta sigla ser
discutida em um tpico prprio no decorrer desta apostila):
Web Services
Web Services
funcionalidade necessria, pode fazer com que um web service possa ser
publicado com classes localizadas em uma pen drive, por exemplo.
Maximizando assim as possibilidades relacionadas ao uso de web services.
Para este exemplo, ser utilizada a IDE Eclipse e o instrutor fornecer o projeto
a ser importado ws-jaxws-noserv.
OlaMundo.java
@WebService
public class OlaMundo {
@WebMethod
public String ola(String nome) {
return "Ol, " + nome;
}
Servico.java
public class Servico {
public static void main(String[] args) {
Endpoint.publish("http://localhost:8080/hello", new OlaMundo());
}
}
Isto
,
a
classe
Servico
publicar
um
endpoint
na
URL
http://localhost:8080/hello com as operaes expostas na classe de servio
OlaMundo. A operao ola, ter a simples funcionalidade de concatenar a
string Ol, ao parmetro fornecido; como os outros exemplos vistos. Com
apenas duas classes e uma linha de cdigo, publica-se um web
service e o torna disponvel para aceitar chamadas.
Web Services
Necessidades
API JAX-WS (via EJB) contendo os seguintes arquivos JAR:
activeio-core-3.0.0-incubator.jar
log4j-1.2.12.jar
mysql-connector-javaactivemq-core-4.1.1.jar
3.1.11.jar
activemq-ra-4.1.1.jar
neethi-2.0.4.jar
backport-util-concurrent-2.1.jar
openejb-api-3.1.2.jar
bcprov-jdk15-140.jar
openejb-client-3.1.2.jar
commons-cli-1.1.jar
openejb-loader-3.1.2.jar
commons-collections-3.2.jar
xbean-finder-shaded-3.6.jar
commons-dbcp-all-1.3xbean-asm-shaded-3.6.jar
r699049.jar
commons-lang-2.1.jar
openejb-core-3.1.2.jar
opensaml-1.1.jar
quartz-1.5.2.jar
saaj-impl-1.3.jar
serializer-2.7.1.jar
serp-1.13.1.jar
slf4j-api-1.3.1.jar
slf4j-jdk14-1.3.1.jar
stax-api-1.0.1.jar
swizzle-stream1.0.1.jar
wsdl4j-1.6.1.jar
wss4j-1.5.4.jar
wstx-asl-3.2.0.jar
xbean-naming-3.6.jar
xbean-reflect-3.6.jar
commons-logging-1.1.jar
openejb-cxf-3.1.2.jar
commons-pool-1.3.jar
openejb-ejbd-3.1.2.jar
cxf-bundle-2.0.9.jar
openejb-hsql-3.1.2.jar
ejb31-api-experimental-3.1.2.jar
openejb-http-3.1.2.jar
geronimo-connector-2.1.jar
openejb-javaagent-3.1.2.jar
geronimo-javamail_1.4_mailopenejb-jee-3.1.2.jar
xml-resolver-1.2.jar
1.2.jar
geronimo-transaction-2.1.jar
openejb-multicast-3.1.2.jar
XmlSchema-1.4.2.jar
howl-1.0.1-1.jar
openejb-server-3.1.2.jar
xmlsec-1.4.0.jar
hsqldb-1.8.0.7.jar
openejb-telnet-3.1.2.jar
jaxb-impl-2.0.5.jar
javaee-api-5.0-2.jar
openejb-webservices-3.1.2.jar
openjpa-1.2.1.jar
Web Services
Arquitetura
Segue a estrutura dos arquivos bsicos necessrios e a sua descrio:
Calculadora.java e OlaMundo.java
Classes Java que contm as regras de negcio do web service.
CalculadoraIF.java e OlaMundoIF.java
Interfaces Java que contm o contrato a ser exposto s chamadas via EJB
(interface remota e local) e as quais as classes acima devero implementar.
TesteEJB.java
Classe de teste para efetuar uma chamada via EJB aos mtodos das classes.
openejb-jar.xml
Configurao das classes que devem ser expostas via EJB.
persistence.xml
Configurao dos datasources de conexo com banco de dados.
build.xml
XML Apache Ant responsvel pelo deploy da aplicao.
Web Services
Web Services
OlaMundo.java
@Stateless
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
@WebService
public class OlaMundo implements OlaMundoIF {
@WebMethod
public String ola(@WebParam(name = "nome") String nome) {
return "Ol, " + nome;
}
}
CalculadoraIF.java
public interface CalculadoraIF {
Double adicao(@WebParam(name = "x") Double x, @WebParam(name = "y")
Double y);
Double subtracao(@WebParam(name = "x") Double x, @WebParam(name = "y")
Double y);
Double multiplicacao(@WebParam(name = "x") Double x, @WebParam(name =
"y") Double y);
Double divisao(@WebParam(name = "x") Double x, @WebParam(name = "y")
Double y);
Double raizQuadrada(@WebParam(name = "x") Double x);
}
OlaMundoIF.java
@Local
@Remote
public interface OlaMundoIF {
String ola(@WebParam(name = "nome") String nome);
}
TesteEJB.java
public class TesteEJB {
public static void main(String[] args) {
Hashtable<String, String> ht = new Hashtable<String, String>();
ht.put(Context.INITIAL_CONTEXT_FACTORY,
"org.openejb.client.LocalInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://localhost:4201");
OlaMundoIF olaMundo = (OlaMundoIF)
ServiceLocator.getEJB3("OlaMundo", ht);
System.out.println(olaMundo.ola("Joao da Silva"));
}
Web Services
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<!-<persistence-unit name="EXEMPLO_OPENEJB">
<jta-data-source>TESTE</jta-data-source>
<class>com.exemplo.openejb.Usuario</class>
</persistence-unit>
-->
</persistence>
openejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<openejb-jar>
<ejb-deployment ejb-name="OlaMundo">
<jndi name="OlaMundo" />
</ejb-deployment>
</openejb-jar>
Para que seja manipulado o deploy e undeploy do EJB no OpenEJB, assim como
o start e stop do servio, necessrio conhecer seus comandos bsicos,
conforme a seguir:
openejb-3.1.2\bin\openejb.bat start Inicializa o OpenEJB, publicando
todos os EJBs.
openejb-3.1.2\bin\openejb.bat stop Pra o OpenEJB.
openejb-3.1.2\bin\openejb.bat deploy [pacote_ejb.jar] Faz o deploy dos
EJBs no OpenEJB, tornando-os ativos.
openejb-3.1.2\bin\openejb.bat
undeploy
[c:\caminho\completo\pacote_ejb.jar] Faz o undeploy dos EJBs no
OpenEJB, tornando-os inativos.
Para testarmos o funcionamento dos web services utilizaremos a ferramenta
soapUI apontando para os seguintes WSDL: http://localhost:4204/OlaMundo?
wsdl e http://localhost:4204/Calculadora?wsdl.
E para testarmos a chamada via EJB, executaremos o mtodo esttico main,
da classe TesteEJB.
Web Services
Apache Axis
Descrio
Apache Axis (http://ws.apache.org/axis/) uma implementao do protocolo
SOAP. Ele isola o desenvolvedor dos detalhes de lidar com o SOAP e o WSDL.
um framework de cdigo aberto, baseado na linguagem Java e no padro XML,
utilizado para construo de web services no padro SOAP.
Necessidades
O deploy das classes do web service podem ser feitas diretamente no contexto
padro do Apache Axis. Isto , no pacote do Apache Axis API, vem um contexto
pronto, com a funcionalidade de expor as classes anotadas com @WebService.
A imagem a seguir demonstra o contedo do contexto do Apache Axis (axis).
Arquitetura
Segue a estrutura dos arquivos bsicos necessrios e a sua descrio:
Web Services
OlaMundo.java
Classes Java que contm as regras de negcio do web service.
build.xml
XML Apache Ant responsvel pelo deploy da aplicao.
}
Para verificarmos se o servio est disponvel para ser consumido, podemos
acessar
o
contexto
do
Apache
Axis
criado
axis
(ex.
http://localhost:8080/axis/) - e identificar se a pgina carrega sem erro. Se abrir
corretamente (conforme imagem a seguir), o contexto do axis est no ar.
Web Services
O teste da execuo da operao ola no web service OlaMundo pode ser feito
via
ferramenta
soapUI,
apontando
para
o
seguinte
WSDL:
http://localhost:8080/axis/OlaMundo.jws?wsdl.
Web Services
Codehaus XFire
Descrio
Codehaus XFire (http://xfire.codehaus.org/) um framework SOAP para
linguagem Java. Codehaus XFire simplifica o desenvolvimento orientado a
servios atravs da facilidade do uso da sua API.
Necessidades
API do Codehaus XFire contendo os seguintes arquivos JAR:
activeio-core-3.0.0-incubator.jar
activemq-core-4.1.1.jar
activemq-ra-4.1.1.jar
backport-util-concurrent-2.1.jar
bcprov-jdk15-140.jar
commons-cli-1.1.jar
commons-collections-3.2.jar
geronimo-transaction-2.1.jar
howl-1.0.1-1.jar
hsqldb-1.8.0.7.jar
javaee-api-5.0-2.jar
jaxb-impl-2.0.5.jar
log4j-1.2.12.jar
mysql-connector-java3.1.11.jar
commons-dbcp-all-1.3r699049.jar
neethi-2.0.4.jar
commons-lang-2.1.jar
openejb-api-3.1.2.jar
commons-logging-1.1.jar
commons-pool-1.3.jar
cxf-bundle-2.0.9.jar
ejb31-api-experimental-3.1.2.jar
geronimo-connector-2.1.jar
geronimo-javamail_1.4_mail1.2.jar
slf4j-api-1.3.1.jar
slf4j-jdk14-1.3.1.jar
stax-api-1.0.1.jar
xml-resolver-1.2.jar
openejb-client-3.1.2.jar
openejb-loader-3.1.2.jar
xbean-finder-shaded-3.6.jar
xbean-asm-shaded-3.6.jar
openejb-core-3.1.2.jar
openejb-ejbd-3.1.2.j
openejb-hsql-3.1.2.j
openejb-http-3.1.2.j
openejb-javaagent-3.1.
openejb-jee-3.1.2.ja
openejb-multicast-3.1.
openejb-server-3.1.2.
openejb-telnet-3.1.2.
openejb-webservice
3.1.2.jar
openjpa-1.2.1.jar
opensaml-1.1.jar
quartz-1.5.2.jar
saaj-impl-1.3.jar
serializer-2.7.1.jar
openejb-cxf-3.1.2.jar
serp-1.13.1.jar
swizzle-stream-1.0.1.jar
wsdl4j-1.6.1.jar
wss4j-1.5.4.jar
XmlSchema-1.4.2.jar
wstx-asl-3.2.0.jar
xbean-naming-3.6.ja
xbean-reflect-3.6.ja
xmlsec-1.4.0.jar
Arquitetura
Segue a estrutura dos arquivos bsicos necessrios e a sua descrio:
Web Services
OlaMundo.java
Classes Java que contm as regras de negcio do web service.
OlaMundoIF.java
Interfaces Java que contm o contrato a ser exposto s chamadas via web
service e as quais as classes acima devero implementar.
services.xml
Arquivo de configurao contendo o mapeamento das classes e interfaces
responsveis pela publicao dos web services.
web.xml
Configurao do mapeamento do servlet XFireConfigurableServlet para a URL
do servio.
build.xml
XML Apache Ant responsvel pelo deploy da aplicao.
index.jsp
Pgina de teste para conferncia da publicao do contexto utilizando o XFire.
Na maioria dos problemas de publicao dos servios via XFire, o contexto web
no fica disponvel em caso de erro. Da, uma simples pgina de teste.
Web Services
OlaMundoIF.java
public interface OlaMundoIF {
String ola(String nome);
}
services.xml
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>OlaMundo</name>
<namespace>OlaMundo</namespace>
<serviceClass>com.tt.webservice.OlaMundoIF</serviceClass>
<implementationClass>com.tt.webservice.OlaMundo</implementationClass>
</service>
</beans>
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servletclass>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servletclass>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
Web Services
</web-app>
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Pgina ok!
</body>
</html>
Web Services
Exerccios
1. Escolha uma implementao utilizada por este tpico e crie um web service
com as seguintes operaes:
a) informa data (dd/mm/yyyy, do tipo String) e retorna o dia da semana
referente data
b) informa username e password (do tipo String), e retorna true se
ambos forem iguais a admin e lana uma exceo RuntimeException
caso o logon falhe
c) informa salrio (do tipo Double), e calcula e retorna o valor
correspondente do INSS, conforme tabela a seguir:
Salrio
at R$ 1.040,22
de R$ 1.040,23 a R$ 1.733,70
de R$ 1.733,71 at R$ 3.467,40
Acima de R$ 3.467,40
Desconto
8%
9%
11%
o desconto de R$ 381,41.
Web Services
Web Services
Objetivos
http://localhost:8080/ws-jaxws-tomcat/mensagem?wsdl
Passo 2: Acesse o cone Launch the Web Service Explorer (ltimo a direita)
Passo 4: Acesse o link WSDL Main, entre com a URL de apontamento para o
WSDL a ser testado e clique em Go
JAX-WS
J embutido na JDK do Java 6, o gerador automtico de cliente fica em um
arquivo chamado wsimport.exe localizado na pasta bin de instalao da JDK.
Este arquivo no tem interface grfica para sua execuo, isto , costuma ser
utilizado atravs do Prompt do MS-DOS, mas existem ferramentas que o
utilizam para criao de clientes, o executando em background exemplo do
soapUI, conforme figura a seguir.
Uma vantagem no uso deste mtodo que ele nativo da verso 6 do Java,
no precisando de outras dependncias JAR.
Para criarmos o cliente, partimos do princpio que a pasta bin mencionada
anteriormente est no PATH do sistema operacional. Devem-se ser executados
os seguintes passos:
Passo 1: Acessar o Prompt do MS-DOS
Onde,
-keep: mantm os arquivos-fonte gerados (se no utilizada este parmetro, o
cliente criado apenas com os cdigos-fonte j compilados; bytecodes)
-p com.tt.meucliente: package onde as classes sero criadas
http://localhost:8080/ws-jaxws-tomcat/mensagem?wsdl:
descritor WSDL
URL
do
URL
do
URL do
new MensagemServiceStub().adicionaMensagem(mensagem);
Netbeans IDE
O Netbeans IDE possui a funcionalidade de criao de cliente de web service
nativamente. Atravs das figuras a seguir, ser demonstrada a criao de um
cliente.
Passo 1: Adicione ao seu projeto um novo arquivo do tipo Web Service Client
Exerccios
1. Crie um cliente para o web service solicitado no exerccio do tpico anterior.
Seria interessante tambm, que voc criasse uma interface web (JSP) para
envio e recebimento dos dados do servio. Assim, ficar clara a comunicao e
o mecanismo necessrio entre o cliente e a interface com o servio.
Objetivos
O que SOAP?
SOAP um protocolo simples baseado em XML para permitir que aplicaes
troquem informaes atravs do protocolo HTTP. Ou mais simplesmente: SOAP
um protocolo para acessar um web service.
Algumas consideraes importantes:
SOAP
SOAP
SOAP
SOAP
SOAP
SOAP
SOAP
SOAP
SOAP
SOAP
SOAP
Onde,
SOAP envelope
O SOAP <Envelope> o elemento raiz em cada mensagem SOAP, e contm
dois elementos filhos, um <Header> opcional e um <Body> obrigatrio.
SOAP header
O SOAP <Header> um sub-elemento opcional do envelope SOAP, e usado
para repassar informaes relacionadas aplicao que devem ser
processadas pelos ns do SOAP ao longo do caminho da mensagem.
SOAP body
O SOAP <Body> um sub-elemento obrigatrio do envelope SOAP, que
contm informaes necessrias para o destinatrio final da mensagem.
O SOAP Request
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
O SOAP Response
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
Mensagens
As mensagens transitadas pelo SAAJ seguem os padres do SOA, que
descrevem o formato das mensagens e especificam tudo o que obrigatrio,
opcional e no permitido.
Estrutura do XML
Um documento XML tem uma estrutura hierrquica feita por elementos e subelementos de vrios nveis. Um elemento tambm referenciado como n. O
SAAJ tem a interface Node, que a base para todas as classes e interfaces que
representam os elementos em uma mensagem SOAP.
Conexes
Todas as mensagens so enviadas ou recebidas atravs de uma conexo. Com
o SAAJ, a conexo representada pelo objeto SOAPConnection, que vai do
remetente at o destinatrio. Esse tipo de conexo chamada point-to-point
(ponto-a-ponto), o popular P2P, utilizado em centenas de programas e muito
difundido atualmente na internet. Mensagens enviadas utilizando o SAAJ so
chamadas request-response. Elas so enviadas atravs da chamada ao
mtodo call de um objeto SOAPConnection, que envia uma mensagem
(request) e fica bloqueado at receber a resposta (response).
Note que o Segundo argumento a ser passado para o mtodo call pode ser
uma String ou um objeto URL, que identifica para onde a mensagem ser
enviada.
String
String
String
String
address = "http://localhost:4204/Calculadora";
targetNamespace = "http://webservice.tt.com/";
requestMethodName = "raizQuadrada";
testParameter = "4.0";
"m");
@SuppressWarnings("unchecked")
private String processaResponse(SOAPMessage response) throws Exception {
StringBuffer result = new StringBuffer();
System.out.println("\n######## RESPONSE ##########");
response.writeTo(System.out);
SOAPBody body = response.getSOAPBody();
Iterator<SOAPElement> elementIterator = body.getChildElements();
while (elementIterator.hasNext()) {
SOAPElement element = elementIterator.next();
// Contedo
result.append(element.getTextContent());
}
return result.toString();
}
public static void main(String args[]) throws Exception {
new TesteComunicacao().sendMessage();
}
}
Exerccios
1. Qual a linguagem de marcao utilizada pelo protocolo SOAP? Qual a
vantagem desta utilizao?
2. Quais os elementos da estrutura de uma mensagem SOAP?
3. Qual o benefcio no uso do protocolo SOAP para questes relacionadas s
redes (ex. firewall)?
4. Com suas palavras, explique o que o SOAP Request e o SOAP Response.
Co-relacione com os conceitos do protocolo HTTP.
5. Crie uma chamada operao de clculo de INSS sem o uso de criao
automtica de m cliente para o web service. Utilize para isto chamadas SOAP.
Objetivos
Conhecer aspectos de segurana relacionados com web services.
Compreender as alternativas e especificaes atuais.
Introduo
No momento, a arquitetura orientada a servios encontra-se no radar de
muitos gerentes de TI, e um nmero maior de empresas passam a dedicar
cada vez mais recursos ao SOA. Se a SOA a arquitetura, os web services so
os blocos de construo. Desta forma, web services esto em destaque no
mundo da computao distribuda como uma tecnologia que resolve os
problemas de interoperabilidade dos sistemas. Porm, por possuir uma
infraestrutura pblica oferece, tambm, uma maior preocupao relacionada
segurana.
Este tpico pretende demonstrar o funcionamento de web services seguros
utilizando a tecnologia Java abordando conceitos da arquitetura orientada a
servios. Para tornar um web service seguro voc deve criptografar a
comunicao, e existem duas maneiras de se fazer isso: garantir a segurana
ao nvel de transporte e em nvel de XML.
Especificaes W3C
O papel da W3C, de acordo com seu site em http://www.w3.org/ liderar a web
ao seu total potencial desenvolvendo protocolos e diretrizes que tero
resultado a longo prazo. W3C desempenha seu papel, atravs da criao de
padres web e orientaes.
O W3C trabalha sobre as seguintes especificaes relacionadas aos web
services e segurana:
Especificaes OASIS
De acordo com seu site em http://www.oasis-open.org/, o OASIS impulsiona o
desenvolvimento e a convergncia, bem como a adoo de normas para ebusiness.
O OASIS trabalha sobre as seguintes especificaes relacionadas segurana
em web services:
Especificaes JCP
O JCP responsvel pelo desenvolvimento na tecnologia Java. Primeiramente o
JCP guia o desenvolvimento e a aprovao de especificaes tcnicas da
tecnologia Java. Est trabalhando atualmente nas seguintes especificaes:
JSR 104 - XML Trust Service APIs: Define uma srie de padres de
APIs e um protocolo para um servio confivel. Um dos objetivos-chave
do design do protocolo minimizar a complexidade de aplicaes
utilizando XML Signature. Se tornando um cliente de um servio
confivel, a aplicao livrada da complexidade para estabelecer
relaes de confiana, o que pode ser baseado em uma diferente
especificao, assim como X509, PKIX, SPKI ou PGP.
JSR 105 - XML Digital Signature APIs: Define uma srie de padres
de APIs para servios de criptografia de XML. A criptografia pode ser
utilizada para criptografar documentos XML, bem como fragmentos
binrios contidos em um documento XML.
JSR 155 - Web Services Security Assertions: Prov um conjunto de
APIs e padres de implementao para segurana (integridade e
confidencialidade) em comunicaes entre web services baseado na
especificao SAML da OASIS.
JSR 183 - Web Services Message Security APIs: Define um conjunto
padro de APIs para segurana de mensagens em web services. O
objetivo desta JSR tornar aplicaes aptas a fazer trocas seguras de
mensagens SOAP.
JSR 196 - Java Authentication Service Provider Interface for
Containers: A especificao prope uma interface padro provedora de
servios com mecanismos de autenticao e integrao com containers.
Provedores integrados atravs dessa interface sero utilizados para
estabelecer as identidades de autenticao usadas no controle de acesso
dos containers, incluindo aquelas utilizadas pelo container em
invocaes de componentes em outros containers.
Especificaes WS-I
WS-I uma organizao aberta, feita com o propsito de promover a
interoperabilidade de web services atravs de diferentes plataformas, sistemas
operacionais e linguagens de programao. Especificamente, o WS-I cria,
promove e d suporte a protocolos genricos para a troca de mensagens entre
web services. O WS-I cria profiles, que recomendam o que e como usar vrias
especificaes criadas por W3C, OASIS e JCP. WS-I trabalha nos seguintes
profiles relacionados segurana em web services:
Basic Security Profile (BSP): Fornece informaes sobre o uso de WSSecurity e os formatos de token UserName e X.509.
REL Token Profile: o profile de interoperabilidade para o token de
segurana Rights Expression Language (REL) que utilizado com WSSecurity.
SAML Token Profile: o profile de interoperabilidade para o token de
segurana Security Assertion Markup Language (SAML) que utilizado
com WS-Security.
Security Challenges, Threats, and Countermeasures: Indica
desafios potenciais em segurana em web services e identifica as
tecnologias candidatas a vencer esses desafios.
WS-Security
Em abril de 2002, a Microsoft Corporation, a IBM Corporation e a VeriSign Inc.
se uniram e publicaram um conjunto de novas especificaes de segurana
denominadas WS-Security, com o objetivo de que as empresas pudessem criar
e construir aplicaes de web services com ampla interoperabilidade.
As especificaes do WS-Security, propostas pela IBM e Microsoft, so
fundamentais para a concretizao de um planejamento amplo de recursos
que possam atender crescente necessidade de oferecer suporte mais seguro
para construo de web services. O documento "A Segurana no mundo dos
Web services", de autoria da Microsoft e da IBM, explica as novas
especificaes de segurana para web services que essas empresas
pretendem desenvolver em conjunto com alguns de seus principais clientes,
parceiros de mercado e entidades responsveis pela padronizao.
O WS-Security suporta, integra e unifica vrios modelos, mecanismos e
tecnologias de segurana em uso no mercado, permitindo que vrios sistemas
possam interoperar em plataformas e linguagens neutras.
As novas especificaes de segurana definem um conjunto de padres para
extenses SOAP ou para cabealhos de mensagens, utilizados para oferecer
maior integridade e confidencialidade s aplicaes de web services. O WSSecurity oferece os mecanismos padro de segurana necessrios para
realizar o intercmbio seguro de mensagens certificadas em um ambiente de
web services.
O documento citado acima define alguns recursos adicionais de segurana de
web services que se enquadram no modelo estabelecido pelas especificaes
WS-Security, entre eles:
Exerccios
1. Cite as principais caractersticas que tornam um web service vulnervel.
2. Explique os nveis de segurana em web services.
3. Quais os pontos devem ser considerados quando falamos em segurana em
web services?
Apndice 1:
Estudos Complementares
125
RPC/Literal
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<x:Example xmlns:x="http://example.org/soapformat/Example">
<cust>
<t:Customer xmlns:t="http://example.org/soapformat">
<t:Name>John Doe</t:Name>
<t:Id>ABC-1234</t:Id>
</t:Customer>
<t:Customer>
<t:Name>Jane Doe</t:Name>
<t:Id>XYZ-1234</t:Id>
</t:Customer>
</cust>
</x:Example>
</soap:Body>
</soap:Envelope>
Referncias Bibliogrficas
129
Apndice 1:
Estudos Complementares
BRYDON, S., MURRAY, G., RAMACHANDRAN, V., SINGH, I., STEARNS, B.,
VIOLLEAU, T. Designing Web Services with the J2EETM 1.4 Platform:
JAX-RPC, SOAP, and XML Technologies. Addison-Wesley, 2004
HANSEN, Mark D. SOA Using Java Web Services. New Jersey: Prentice Hall,
2007.
IBM. What is SOAP? Disponvel em: http://tinyurl.com/29yky4g. Acesso em 3
de nov. 2010.
JENNINGS, Frank. JURIC, Matjaz B. LOGANATHAN, Ramesh. SARANG,
Poornachandra. SOA Approach to Integration: XML, Web services,
ESB, and BPEL in real-world SOA projects. Birmingham: Packt
Publishing Ltd., 2007.
KEITH, Mike. SCHINCARIOL, Merrick. Pro EJB 3: Java Persistence API.
Berkeley: Apress, 2006.
KOCH, Christopher. ABC da SOA. Disponvel em: http://tinyurl.com/cnujvq.
Acesso em: 18 de ago. 2010.
PEREIRA, Michael Luiz. Web Services Seguros em Java. 2008. 64.
Monografia Ps-graduao em Desenvolvimento Orientado a Objetos Java
Centro Universitrio de Maring. Maring, 2008.