Este documento apresenta um workshop sobre Arquitetura Orientada a Serviços (SOA) com foco no JBoss Enterprise Service Bus (ESB). O objetivo é fazer a audiência compreender os principais conceitos de SOA e ESB, como o JBoss ESB. A agenda inclui tópicos como visão geral de SOA, web services, integração empresarial, programação orientada a mensagens, conceitos de ESB e demonstrações práticas com o JBoss ESB.
Workshop - Modelo de negócios no e-commerce: Diferenciais e estratégiasE-Commerce Brasil
O objetivo deste WORKSHOP foi mostrar aos participantes que estão analisando e selecionando qual o melhor modelo de negócio para e-commerce no mercado aderente ao seu business. Apresentar os principais modelos de aplicação do e-commerce, expondo as características e vantagens de cada um.
Workshop apresentado no dia 29 de março de 2012.
Apresento alguns conceitos sobre a arquitetura do JBoss Fuse. Nesta apresentação criamos um simples serviço CXF e mostramos diferentes formas de implantar e gerenciar o serviço no JBoss Fuse 6.1
Modelo de negócios no e-commerce - diferenciais e estratégiasE-commerce Class
No dia 27 de março de 2012, Fernando Mansano e Daniel Ribas fizeram um webseminário com o objetivo de mostrar aos participantes que estão analisando e selecionando qual o melhor modelo de negócio para e-commerce no mercado aderente ao seu business. Apresentar os principais modelos de aplicação do e-commerce, expondo as características e vantagens de cada um, como:
1 - Comparativo entre os modelos Open Source, On Premises, SAAS e Full Commerce
2 - Como desenvolver e publicar uma loja virtual.
3 - Forma de cobrança.
4 - Plataformas.
5 - Lojas virtuais por modelo.
6 - Tecnologias utilizadas.
7 - Mercado.
Aqui está a apresentação utilizada e no link a seguir um artigo sobre esta palestra:
http://ecommerceclass.com.br/2012/03/realizado-o-webseminario-sobre-modelo-de-negocios-no-e-commerce/
Evento: E-commerce Brasil
Workshop - Modelo de negócios no e-commerce: Diferenciais e estratégiasE-Commerce Brasil
O objetivo deste WORKSHOP foi mostrar aos participantes que estão analisando e selecionando qual o melhor modelo de negócio para e-commerce no mercado aderente ao seu business. Apresentar os principais modelos de aplicação do e-commerce, expondo as características e vantagens de cada um.
Workshop apresentado no dia 29 de março de 2012.
Apresento alguns conceitos sobre a arquitetura do JBoss Fuse. Nesta apresentação criamos um simples serviço CXF e mostramos diferentes formas de implantar e gerenciar o serviço no JBoss Fuse 6.1
Modelo de negócios no e-commerce - diferenciais e estratégiasE-commerce Class
No dia 27 de março de 2012, Fernando Mansano e Daniel Ribas fizeram um webseminário com o objetivo de mostrar aos participantes que estão analisando e selecionando qual o melhor modelo de negócio para e-commerce no mercado aderente ao seu business. Apresentar os principais modelos de aplicação do e-commerce, expondo as características e vantagens de cada um, como:
1 - Comparativo entre os modelos Open Source, On Premises, SAAS e Full Commerce
2 - Como desenvolver e publicar uma loja virtual.
3 - Forma de cobrança.
4 - Plataformas.
5 - Lojas virtuais por modelo.
6 - Tecnologias utilizadas.
7 - Mercado.
Aqui está a apresentação utilizada e no link a seguir um artigo sobre esta palestra:
http://ecommerceclass.com.br/2012/03/realizado-o-webseminario-sobre-modelo-de-negocios-no-e-commerce/
Evento: E-commerce Brasil
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Tiago Marchetti Dolphine
Microservices é um estilo arquitetural que têm revolucionado o desenvolvimento de aplicações através de pequenos serviços, desacoplados e com foco em executar uma tarefa específica comunicando-se através de Web APis ou mensagens assíncronas. Nesta palestra será apresentado como microservices é capaz de solucionar seus problemas no desenvolvimento de sistemas robustos e escaláveis. Serão abordadas as principais características deste paradigma, quais as vantagens e desvantagens em comparação a arquiteturas monolíticas, exemplos e situações de uso.
Saiba como a Web Semântica (Web 3.0) vem se tornando cada vez mais uma realidade com a chegada do HTML 5 e conheça o que essa nova versão da linguagem de marcação tem de diferente das anteriores e quais as vantagens que nos traz. Com Edu Agni, diretor de Arte Online, e especialista em Semântica e Web Standards.
Monitorando APIs REST com o Application InsightsRenato Groff
Apresentação sobre monitoramento de APIs REST com o Application Insights. Palestra realizada em São Paulo-SP em 01/09/2017, durante a edição 2017 do evento DevXperience.
Palestra ministrada na SECOMP Betim na PUC-MG de Betim sobre a nova tendência em arquitetura de sistemas Web e explicar sobre a questão do estilo arquitetural SOFEA.
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Tiago Marchetti Dolphine
Microservices é um estilo arquitetural que têm revolucionado o desenvolvimento de aplicações através de pequenos serviços, desacoplados e com foco em executar uma tarefa específica comunicando-se através de Web APis ou mensagens assíncronas. Nesta palestra será apresentado como microservices é capaz de solucionar seus problemas no desenvolvimento de sistemas robustos e escaláveis. Serão abordadas as principais características deste paradigma, quais as vantagens e desvantagens em comparação a arquiteturas monolíticas, exemplos e situações de uso.
Saiba como a Web Semântica (Web 3.0) vem se tornando cada vez mais uma realidade com a chegada do HTML 5 e conheça o que essa nova versão da linguagem de marcação tem de diferente das anteriores e quais as vantagens que nos traz. Com Edu Agni, diretor de Arte Online, e especialista em Semântica e Web Standards.
Monitorando APIs REST com o Application InsightsRenato Groff
Apresentação sobre monitoramento de APIs REST com o Application Insights. Palestra realizada em São Paulo-SP em 01/09/2017, durante a edição 2017 do evento DevXperience.
Palestra ministrada na SECOMP Betim na PUC-MG de Betim sobre a nova tendência em arquitetura de sistemas Web e explicar sobre a questão do estilo arquitetural SOFEA.
Como ajudamos empresas e negócios financeiros a se transformarem de forma efetiva e pragmática focando em negócios e usando tecnologia como um catalisador de inovação
Etapas pragmáticas na adoção de DevOps, Ferramentas e Soluções. Apresentação realizada no Evento DevOps Tour SP, cobrindo algumas estratégias, ferramentas e dicas na adoção de cultura DevOps.
In this tutorial/workshop slide deck we show how you can get started with WSO2 Microservices Server, we are covering:
- Introduction
- Running Kubernetes, Docker and Containers with MSS
- Analytics on MSS
Hope you can enjoy!
Conectando Turismo e Viagens - Plataforma WSO2Edgar Silva
Entenda como podemos apoiar na inovação da indústria de turismo, viagem, lazer e loyalty com alguns conceitos chave para seus negócios dos próximos 5 anos.
WSO2 Application Server como Alternativa ao TomcatEdgar Silva
Veja como podemos apoiar seu ambiente que está repleto de Tomcats que podem ser difíceis de gerenciar, monitorar etc. Breve visão do WSO2 AppServer em conjunto com o WSO2 BAM.
2. Bem vindo ao Workshop SOA
• Objetivo:
– Fazer com que a audiência compreenda os principais
conceitos de Arquiteturas Orientadas a Serviços - SOA ,
como foco no barramento de serviços: JBoss ESB
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
3. Instrutor
Edgar A. Silva
– edgar.silva@gmail.com
– http://www.edgarsilva.com.br
– http://ankiewsky.blogspot.com
– http://jbossbrasil.ning.com/profile/edgar
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
4. Softwares que vão ser usados neste
Workshop
• Eclipse Ganymed
• JBoss Tools
• JBoss ESB Server 4.4 GA
• Opcionais:
– jBPM 3.2
– Drools
D
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
5. Agenda
• Visão Geral de Arquitetura Orientada a • E
Entendento o que são Providers (protocolos)
Serviços • Clientes ESB Unware e ESB Aware
• WebServices: Até onde eles vão e quais suas • Entendendo os Serviços e seus Listeners
maiores limitações
• Compreendendo Actions do ESB
• Visão geral dos Enterprise Integration Patterns
- EIPs • Actions out-of-the-box
• Conceitos de Programação Orientada a • Actions Personalizadas
Mensagens e MOMs • Actions baseadas em Annotations
• Visão geral de um Enterprise Service Bus
• Integrando o ESB a Serviços de Regras do
• Apresentando o JBoss ESB
Drools
• Entendendo as distribuições do JBoss ESB
• Integrando o ESB a BPM com jBPM
• Recompilando o JBoss ESB com base nos
fontes do JBoss.ORG • Construindo consumidores e provedores de
WebServices com JBoss ESB
• Ferramentas embarcadas com o JBoss ESB
• Executando os primeiros Exemplos do JBoss
ESB @ Alguns direitos Reservados
http://www.edgarsilva.com.br
6. Planejamento
• Início: 09:00
• Break: 10:30 (10 minutos)
B
• Almoço: 13:00
• Retorno: 14:00
• Break: 16:20 (15 minutos)
B
• Término: 18:00
• Bate-papo: 18:10 (20 minutos)
B
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
7. Visão Geral de
Arquitetura Orientada a Serviços
S
SOA (Service Oriented Architecture)
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
8. SOA Transformou TI em Tecnologia da Inovação
• Respostas mais rápidas
• Aceitação das
Mudanças
• Foco em entrega de
Valor
• Integrações
• Você!
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
9. O que SOA é então?
• Arquitetura Orientada a Serviços - SOA
– Um modelo Arquitetural que visa proporcionar resiliência,
respostas rápidas a mudanças, integrações com o novo e
o legado, fortemente baseada em contratos/serviços,
proporcionando monitorações dos mesmos, bem como
p
princípios de qualidade(SLA por exemplo)
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
10. Enão o que SOA não é?
• Uma Solução vendida em
Caixinha
• A necessidade da compra
de licenças de 982983298
produtos.
• Uma Tecnologia...
• Uma Linguagem...
• Uma tendência....
• Um monte de
WebServices!!!!!!!!!!!!!!!!!!!!!
• Um cara que diz: “ Eu uso
SOA”
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
11. SOA e OpenSource
• A chance de aprender primeiro
• A chance de errar e não ter prejuízo
• Use OpenSource não só usando mas:
– Contribuindo
– Testando
– Perguntando/Reclamando nos Foruns das Comunidades
• Quando tudo estiver pronto para entrar em
produção procure usar Opensource que possuir
Suporte Oficial de uma grande empresa como
garantia de atendimento, continuidade e SLA.
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
12. Soluções de Tecnologia OSS para SOA
• Enterprise Service Bus - ESB
– JBoss ESB, Mule, Apache ServiceMix
• BPM
– JBoss jBPM, OSWorkflow, Intalio
• Rules Engines (Regras)
R
– Drools, TeamWare
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
13. Foco do Workshop
• ESB (Enterprise Service Bus)
E
– JBoss ESB
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
14. WebServices:
Até onde eles vão e quais suas maiores limitações
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
15. WebServices
• Alternativa bem sucedida em termos de RPC
• Contract Enforcement (WSDL, XSD)
• Stateless (Http)
S
• SOAP
• WSDL
• XML, XML Schema
• WS * (* = Transações, Segurança, Colaboração etc)
W
• Interoperabilidade (Java, .net, Ruby, PHP, etc)
I
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
16. Stacks Java para WebServices
• Sun Metro
– https://metro.dev.java.net/
• Apache CXF
– http://cxf.apache.org/
• JBossWS
– http://www.jboss.org/jbossws/
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
17. WebServices nos dias de hoje
• EJB 3.0
– Suporte a anotações sobre os POJOs
– Capacidade de expor um EJB como um endpoint SOAP
controlado pelo contêiner EJB
– Facilita a exposição / ocultamento de operações no
endpoint através de anotações (ver limitações nas specs)
• Spring Framework
– Simplificadores para proporcionar o uso de WebServices.
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
18. WebServices são formidáveis porém....
• Da mesma forma que você resolve inúmeros
problemas complexos com WebServices, eles
acabam acarretando uma complexidade alta mesmo
para serviços simples.
• Casos Reais onde WebServices atrapalharam
alguns clientes:
– Tamanho do pacote XML trafegado no HTTP
– Autenticações entre domínios de segurança diferentes
– Dificuldade de manter transações consistentes devido a
heterogêneidade de plataformas (C++, COBOL, Java)
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
19. Alternativas ao WebServices
• Soluções dos “ velhos tempos” muito comum em C++,
PHP e outras soluções:
– XML-RPC
• Dias de Hoje:
– REST (REpresentational State Transfer)
R
• Liberdade de Escolha de Padrão de Comunicação
• Baseado em URLs
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
20. Conclusão WebServices
• Grandes meios de ponto de exposição de
E
Serviços(Endpoints)
• Ótima solução de Interoperabilidade
• Padronizações para requisitos corporativos
padronizadas pelo mercado (ex: WS-Security, WS-
A
Addressing, WS-Transactions etc)
• Apenas não tenha em mente que apenas de
WebServices uma Arquitetura de Serviços sobrevive.
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
21. Pense bem também em:
• Oferecer diferentes possibilidade de acesso aos seus
serviços e não só WebServices
– REST, Http, Sockets, JMS e etc
• Se você tiver isto em mente, nunca vai abusar
demais das capacidades que WS podem lhe
oferecer, mantendo assim a questão de “ baixo
acoplamento+contratos” sempre real na sua
arquitetura.
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
22. Visão Geral dos EIPs
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
23. EAI como Disciplina de SOA
• Necessidade de Integrações entre
sistemas:
– Enterprise Integrations
Patterns
• http://www.eaipatterns.com
• Estilos de Integração
– Transferência de Arquivos
– Banco de Dados
Compartilhado
Detalhes (Amazon):
– RPC
– Mensageria
http://www.amazon.com/dp/0321200683?tag=enterpriseint-20&camp=14573&creative=327641&linkCode=as1&cre
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
25. Estrutura de um EAI Pattern
Splitter
Contexto:
Um cenário para ser processado deve ser tratado como partes independentes que carregam
informações íntrinsicas para o negócio
Problema:
Como processamos uma mensagem que contêm várias informações distintas e
cada informação é processada em um sistema ou forma diferente?
Solução:
Usar um splitter para separar as informações de uma mensagem, e que envie cada parte da
mensagem a seu respectivo sistema para processamento.
Consequências:
Overhead no desempenho do processamento da mensagem original, splitter deve conhecer o
contrato do emissor da mensagem para saber o que responder, acoplamento funcional do
splitter com os sistema que executarão as partes da mensagem, mecanismos transacional
centrado no splitter (All or Nothing) @ Alguns direitos Reservados
http://www.edgarsilva.com.br
27. Programação Assíncrona
• Tradicional:
– Requisita => Espera Resposta
• Assíncrona:
– Requisita=>Não Espera => Após terminar o processamento
pode ser enviada uma resposta
• Cenário de Negócio:
– Pagamento de Cartão de Crédito
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
28. Mensagens – JMS (Java Message Services)
M
• Poder de trocar informações de forma assíncrona
• Publicação de Mensagens
• Conceitos:
– Queue – 1 Mensagem 1 Interessado (ex: e-mail)
Q
– Topic – 1 Mensagem N Interessados (ex: mailing-list)
T
• MOM - Message Oriented Middleware
– WebSphere MQ
– SonicMQ
– ActiveMQ
– JBossMQ, NOVO JBoss Messaging
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
30. JMS
• Usado em larga escala em integrações e aplicações
críticas, principalmente em bancos e grandes
empresas.
• Meio comum de comunicação com legados
(ex: Websphere MQ + COBOL)
(
• JMS motivou bastante a indústria para criar uma
centralização de Serviços, gerando o conceito de
Barramento de Serviços ou ESB.
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
31. Enterprise Services Bus - ESB
• Uma forma de intregar padrões de
comunicação, tranformação e roteamento entre
serviços.
• ESB pode ser visto como um conjunto de
componentes que interligam camadas de
negócios com serviços de integração tais como:
– Roteamento de Dados
– Transformação de Dados
– Transformação de Protocolos
– Mapeamentos de Serviços de Nomes
– Processamento de Mensagens
– Gerenciamento de Transações
– Coordenação da implementação de Serviços (Orchestration)
C
– Coordenação de Processos de Negócios (Choreographyquot;)
C
– Security management
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
32. JBoss ESB
• Roteamento
– Baseado em Conteúdo (CBR)
B
– Lista de Destinos (Static routing)
L
• Orquestração
– BPM - Business Process Management (jPDL)
B
– Web Services Orchestration (WS-BPEL)
W
• Web services
• Rules services
• Transformation Services
• E
EDA (Event-Driven Architecture)
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
33. Enterprise Service Bus
• Barramento de Serviços
– Escutar os eventos dentro dos protocolos
– Responder com Ações
– As Ações podem chamar ou serem os serviços.
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
35. Visão JBoss ESB
G
Governança SOA (RAS, APM, Regras, DSLs)
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
Varios ESB's atuando em balanceamento ou clustering
36. Necessidade de um ESB
• Você precisa de integração, mas precisa se focar no
negócio e não como Java gerencia um socket ou as
threads para ler um arquivo texto
• Você está participando de um projeto multi-
departamental e ao longo prazo, e não, uma simples
aplicação que acessa vários legados.
• Lembre-se: Foco
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
37. Como a maioria dos ESB's funcionam
Um Serviço
fica registrado
no ESB de alguma
forma.
Um Serviço
pode estar
associado a 1 ou
mais protocolos
(
(ws,jms,ftp etc)
Os Serviços
Respondem
A estimulos
dos protocolos
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
38. Cenários ESB
Pasta
X
JBoss ESB
DB
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
39. Instalando o JBoss ESB
• Realizando o Download do JBoss ESB Server
• Realizando o Download do JBoss ESB
• Baixando os Fontes do JBoss ESB
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
40. Instalando o JBoss ESB
• Realizando o Download do JBoss ESB Server
• Realizando o Download do JBoss ESB
• Baixando os Fontes do JBoss ESB
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
41. JBoss ESB Server
• http://www.jboss.org/jbossesb/downloads/
• Utilize o JBoss Esb Server <VERSAO>
– Forma mais simples de você utilizar o JBoss ESB, pois ele
já traz o ESB embarcado dentro do JBoss App Server
– Instalação:
• Descompacte o zip
• Entre no diretórios jboss-as/bin
• Digite ./run.sh para Unix OS ou run para Windows
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
42. Instalando o JBoss ESB
• Realizando o Download do JBoss ESB Server
• Realizando o Download do JBoss ESB
• Baixando os Fontes do JBoss ESB
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
43. JBoss ESB
• Se você precisar instalar em um JBoss App Server,
você vai executar um script ant para isto:
• Na pasta install leia o readme.txt
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
44. Instalando o JBoss ESB
• Realizando o Download do JBoss ESB Server
• Realizando o Download do JBoss ESB
• Baixando os Fontes do JBoss ESB
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
45. JBoss ESB acesso ao SVN
• http://www.jboss.org/jbossesb/subversion.html
• Cliente SVN
• Comandos:
– svn co http://anonsvn.jboss.org/repos/labs/labs/jbossesb/
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
46. “ Run Forest, run...”
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
47. Executando o JBoss ESB pela primeira vez
• <Jboss_ESB_Install_dir>/bin/run.sh
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
48. Estrutura do JBoss ESB
• |-- bin (binário do App Server)
|
• |-- client (bibliotecas cliente)
|
• |-- docs (Documentações)
|
• |-- jar-versions.xml (Versões dos Jars)
|
• |-- javadocs
• |-- lib
• |-- samples (Exemplos diversos)
|
• |-- server (perfis do Jboss App Server)
|
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
49. QuickStarts
• install_dir/samples/quickstarts
– Inúmeros exemplos para cenários reais onde você pode
aplicar o uso de um ESB, no caso: JBoss ESB
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
50. ESBGEN
• esbgen.sh
– É basicamente uma simples ferramenta que cria um projeto
básico com suas bibliotecas requeridas, arquivos e scripts
ants para compilação, deploy e teste.
• documentação/download:
http://ankiewsky.blogspot.com/2008/10/esbgen-easy-way-to-create-jboss-esb.html
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
51. Usando o esbgen
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
52. A primeira Aplicação JBoss ESB
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
53. Ingredientes de um Projeto ESB
• build.xml – Script ANT
• jbm-queue-service.xml – Definição das filas JMS
• deployment.xml – Ordem e dependência de
deployment
• jboss-esb.xml – Definição dos Serviços ESB
• jbossesb-properties.xml – Propriedades do Serviços
• src – Códigos Java :)
s
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
54. Providers no JBoss ESB
(
(protocolos de escuta de serviço)
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
55. Provider
• Do inglês:
– Provider Pro*vidquot;er, n.
• One who provides, furnishes, or supplies; one who
procures
• what is wanted.
• Evite confundir com a tradução “ provedor”
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
56. Providers no JBoss ESB
• São os “ protocolos” onde os eventos de Integração
podem acontecer
• Event-Driven Architecture
– Arquitetura Dirigida por Eventos
– Um modelo muito comum em arquiteturas SOA
• Eventos?
– Copiar um TXT para uma pasta
– Publicar uma mensagem num Queue JMS
– Realizar a chamada de um Método de um WS
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
57. JBoss ESB possui os seguintes providers
Protocolos de Escuta
• JMSProvider
• FSProvider
• FTPProvider Em todos estes providers
Informações podem chegar.
• JBRProvider
Estas informações servem de subsídios
• SQLProvider pros serviços
• HibernateProvider
• JCAProvider
• BusProvider
• SchedulerProvider
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
58. Clientes “ Aware” e “ Unaware” para
o JBoss ESB
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
59. Na doc do JBoss ESB estes conceitos
aparecem bastante
• As informações publicadas nos providers são
tratadas como Mensagens
• Estas mensagens podem ser:
– ESB Aware – No formato que o JBoss ESB compreende
– ESB Unaware – Um cliente externo está publicando uma
mensagem que ainda não é do formato que o ESB
compreende
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
60. ESB Unaware
• São clientes que podem ser Java ou não:
– Um ERP que gera um TXT numa pasta
– Um cliente que envia um xml via FTP
– Um cliente PHP que chama uma operação via HTTP
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
61. ESB Aware
• O JBoss ESB possui um formato para suas
mensagens, uma vez esta mensagem dentro do
barramento (pipeline), este formato se mantém
conhecido e na mesma estrutura por toda sua
execução.
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
62. ESB Message/ SOAP Message
<xs:complexType name=quot;Envelopequot;>
public interface Message
<xs:attribute ref=quot;Headerquot;
{
use=quot;requiredquot;/>
public Header getHeader ();
<xs:attribute ref=quot;Contextquot;
public Context getContext (); use=quot;requiredquot;/>
public Body getBody (); <xs:attribute ref=quot;Bodyquot; use=quot;requiredquot;/>
public Fault getFault (); <xs:attribute ref=quot;Attachmentquot;
use=quot;optionalquot;/>
public Attachment getAttachment ();
<xs:attribute ref=quot;Propertiesquot;
public URI getType ();
use=quot;optionalquot;/>
public Properties getProperties ();
<xs:attribute ref=quot;Faultquot;
} use=quot;optionalquot;/>
</xs:complexType>
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
63. JBoss ESB Gateways
• São providers que vão servir de porta de entrada
para clientes “ Unaware”
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
64. Gateways para ESB Message
PHP
Client
Cobol Gateway ESB
Aware
(
(recebe um dado) Mensagem padrão dentro do barramento
.net
Client
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
71. Visualiazando a Árvore que forma um
Serviço
• Há Providers
• Há Serviços
– Que possuem Listeners
– Estes Listeners escutam os Providers
• Quando algo acontece nos Providers
– As Actions do Listeners são disparadas
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
73. Actions
• O JBoss ESB possui várias Actions prontas que
respondem aos eventos que acontecem nos
providers
• Estas Actions desempenham inúmeros papéis, entre
eles:
– Transformar conteúdos das Mensagens
– Rotear a Mensagem pro destino apropriado
– Capturar Informações e inserir num banco de Dados
– Chamar outros Serviços de dentro do barramento
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
74. Actions
V
Veja Programmers Guide (Pág 80 a 111)
• Transformers & Converters • PersistAction Management
• ByteArrayToString • jBPM BpmProcessor.
• LongToDateConverter • GroovyActionProcessor
• ObjectInvoke • EJBProcessor
• ObjectToCSVString • EIPs Actions
• ObjectToXStream • EchoRoutr, HttpRouter JMSRouter
• XStreamToObject • ContentBasedRouter, StaticRouter, StaticWiretap
• SmooksTransformer • Notifier
• SmooksAction • SOAPProcessor
• XML, EDI, CSV e Input Payloads
• Java Input Payload
• Specifying the Result Type
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
75. Utilizando Actions do JBoss ESB
• Sempre consulte o catálogo de Action já prontas
antes de começar uma do zero.
• Actions mais comuns:
– Transformação
– Roteamento
– As que implementam os EIPs
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
76. Exemplo de Action de Transformação
• Smooks – Framework codehaus
• org.jboss.soa.esb.smooks.SmooksAction
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
77. Caso de Uso
• Transformar um arquivo TXT em XML
• Conteúdo do Arquivo:
compras.edgarsilva.2812072359.txt
123131090903190931,45.43
098928938298193819,9.56
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
81. Actions Personalizadas
• Implementar a interface:
– org.jboss.soa.esb.actions.ActionPipelineProcessor
– org.jboss.soa.esb.actions.BeanConfiguredAction
• Para Ajudar a ler propriedades do Contexto do ESB
• Herdar da classe (mais comum e recomendável)
H
– org.jboss.soa.esb.actions.AbstractActionPipelineProcessor
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
82. Regras para as Actions
• Ao herdarem de AbstractActionLifeCycle devem:
– Receber um ConfigTree no Construtor
– Ter um método que receba como parametro um ESB
Message e que o devolva alterado ou não como retorno
deste método.
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
83. Exemplo de Action
import org.jboss.soa.esb.actions.AbstractActionLifecycle;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
public class WorkshopAction extends AbstractActionLifecycle {
ConfigTree tree;
public Workshop(ConfigTree t) {
tree = t;
}
public Message execute(Message m) {
System.out.print(quot;Action executada ...quot;);
return m;
}
}
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
86. Material de Documentação neste ponto
• JBoss ESB Programmers Guide
– esb_install_dir/docs/ProgrammersGuide.pdf
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
87. Lab 1
Criando um Projeto ESB com esbgen
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
88. Solução
• Configurar o esbgen e Apache ANT
• Chamar o esbgen
– Confirmar a workspace
– Informar o nome workshoplab1 no nome do projeto
– Confirmar as outras sugestões do esbgen
• Entrar no diretório workshoplab1
• Verificar se todos os arquivos foram gerados
• Abrir o Eclipse e importar o Projeto para a
Workspace (lembre-se que a workspace será a pasta
q
quickstarts)
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
89. Cont.
• Vá no esb_install_dir/bin/ e inicie o ESB server via o
comando ./run.sh ou run
• Vá até o diretório workshoplab1 e digite run deploy
Objetivo do Lab:
Fazer com que você tenha os primeiros contatos com o
Jboss ESB e com os artefatos que compoem um Projeto
usando esta tecnologia.
Resultado : No final você deve ter visto a mensagem de
deploy com sucesso do seu servico worshoplab1.esb
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
94. Criando uma Action
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
95. WorkshopAction
package org.demo.workshoplab1;
import org.jboss.soa.esb.actions.AbstractActionLifecycle;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
public class WorkshopAction extends AbstractActionLifecycle {
protected ConfigTree configTree;
public WorkshopAction(ConfigTree t) {
configTree = t;
}
public Message processarAcaoDentroDoESB(Message m){
System.out.println(quot;Passou no ESB e recebeu os dadosquot;);
return m;
}
}
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
96. Plugando a Action no Serviço do ESB
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
97. Plugando a Action ao Serviço
<actions mep=quot;OneWayquot;>
<action class=quot;org.jboss.soa.esb.actions.SystemPrintlnquot; name=quot;dumpquot;>
<property name=quot;messagequot;/>
<property name=quot;printfullquot; value=quot;truequot;/>
</action>
<action name=quot;workshopActionquot;
class=quot;org.demo.workshoplab1.WorkshopActionquot;
process=quot;processarAcaoDentroDoESBquot;/>
</actions>
package org.demo.workshoplab1;
...
public class WorkshopAction extends AbstractActionLifecycle {
public Message processarAcaoDentroDoESB(Message m){
System.out.println(quot;Passou no ESB e recebeu os dadosquot;);
return m;
}
} @ Alguns direitos Reservados
http://www.edgarsilva.com.br
99. Empacotamento .esb
• No JBoss ESB, o(s) serviço(s) são “ deployados” com
a extensão .esb
• Um .esb é um Archive como um jar, war, ear mas
assim como o sar, é especifico do JBoss Esb
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
100. Estrutura do .esb
├───METAINF
│ ├───jbossesb.xml (descritor dos serviços)
j
│ ├───deployment.xml (dependência de deployment)
d
│ └───MANIFEST.MF
├───<java classes> (classes compiladas .class)
<
├───<jars> (bibliotecas)
<
└───<queueservice.xml> (Serviços JMS)
<
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
101. Actions baseadas em Annotations
• http://ankiewsky.blogspot.com/2008/09/posos-plain-old-services-objects-in.html
• Possível reaproveitar POJOs dentro do Barramento de Serviços
• DEMO
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
104. Drools
• Engine de Regras
• Permite separar regras de negócios das outras
atividades.
• Atualização “ hot” de Regras.
• BRMS – Business Rules Management System
• JSR 094
• DSL – Domain Specific Language
• Guvnor
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
105. Drools Guvnor
• Interface Web de Gerenciamento de Regras de
Negócios Java
• Repositório de Regras
• AtomPub, JCR, WebDav
• Garante que as regras fiquem separadas dos códigos
de Infra-estrutura
• http://www.jboss.org/community/docs/DOC-9834
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
106. Importância para o ESB
• CBRs
• Regras em Gerais para implementações de vários
EIPs
• Validações
• Permissões
• Re/Encaminhamento de Processamento
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
117. ESB & BPM
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
118. Business Process Management - BPM
• Quando falamos de BPM em nível de serviços o
sentido está em buscar uma forma de orquestrar o a
ordem e o funcionamento dos serviços.
• Orquestração é uma capacidade muito importante
para o desenho e execução de uma Arquitetura
Orientada a Serviço
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
119. Business Process Management
• Gerenciar Processos de Negócios em resumo:
– Workflows
– Gerenciar Estado+Informações
– Representar Graficamente o Estado
– Permitir extrair informações estatísticas a exemplo:
• Quantos Processos estão parados na “ Análise de
Crédito”
• Qual o nó do processo que mais demanda tempo
• Quais usuários mais tem processos associados em
execução
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
120. JBoss jBPM
Arquitetura do Projeto
Abstração de qualquer linguagem de Processo
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
121. JBoss jBPM 3.2
• Permite Gerenciamento de Processos de Negócios de forma visual e via
código(xml).
• Processos podem ser adicionados e ou removidos com a mesma facilidade de
hotDeployments.
• Gerencia a Execução de Processos de Negócios.
• Eclipse jBPM Designer – Edição Visual de Processos
• Console Web de Processos
• jPDL – para BPM and workflow
• Suporte ao PVM (Novo)
P
• Suporte a BPEL (WS-BPEL)
S
• Gerenciamento de Estados / Tarefas
• Salva estados do processo em Banco de Dados
• Gerencia associação de usuários e grupos
• Multi-Banco de Dados (Hibernate)Alguns direitos Reservados
M @
http://www.edgarsilva.com.br
• Pode rodar dentro do JBoss AS ou fora, ou até mesmo em outros AS.
122. Boas soluções de BPM devem Possibilitar ...
Que uma pessoa não
técnica possa criar Que o mesmo modelo
modelos de negócio e criado possa inspirar a
mapas mentais sem criação de um
auxilio da TI processo executável!
Padrões de coreofrafia,
orquestração de serviços
A geração, extração e e gerenciamento de
analise de métricas e tarefas humanas para
indicadores que acomodar a execução
viabilizem a analise dos processos.
do processo e sua
melhoria contínua.
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
123. Como o jBPM é visto Atualmente?
Excelente!
Bom!
Arquiteto Corporativo +
Analista de Negócio
Integrador de Dados e
Serviços + Desenvolvedor
Fraco! Excelente!
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
124. Problemas das ferramentas de BPM
• Algumas muito boas no Desenho, porém fracas em
Execução
• Outras muito boas mas somente em Execução e
fracas no Desenho
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
125. JBpm: Opção #1 ao embarcar soluções de
Workflow/BPM
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
126. JBpm: Casos de Uso
• Como motor de processos e aplicações
• Exemplo de uso com Microsoft .net
Cliente Asp.Net Cliente Desktop VB.Net
C
Camada de Serviços (WebServices)
J
JBoss jBPM (motor de processos)
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
127. jBpm: Casos de Uso
• Como motor de Processos
• Cliente habilitando SOA na sua empresa
V
Vários Clientes (Java, PHP, Delphi etc)
EJBs WebServices REST
J
JBoss jBPM (motor de processos)
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
128. JBpm : Framework
• Oferece um framework sofisticado para tratamento
de processos de negócios e workflow
• Fácil aprendizado
• Open-Source
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
129. JBpm: Designer
• Plugins do Eclipse
• Permite que o desenvolvedor traduza o desenho do
processo de quaquer linguagem para a notação do
jBPM.
• Suporte a Interações Humanas
• Suporte a Interações Sistemicas
• Suporte a Eventos
• Futuro: Exportador para BPMN/XPDL
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
130. jBpm: Designer
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
131. jBpm: Console
• Ferramenta Web que permite:
– Visualizar os Processos Instalados e suas versões
– Visualizar as instâncias em execução de cada
processo
– Simular a execução dos Processos
– Instalar novos processos
– Controlar acessos de usuários aos processos
– Mostrar gráficamente em que passo o processo
está parado
– Permite personalização de cores, fontes, idiomas e
etc, proporcionando uma melhor experiência visual
para os clientes. @ Alguns direitos Reservados
http://www.edgarsilva.com.br
132. jBpm: Console
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
136. JbpmAction : JBoss ESB
org.jboss.soa.esb.services.jbpm.actions.BpmProcessor
•Esta Action é responsável por gerenciar a execução
dos processos do jBpm
•Comandos Disponíveis:
– StartProcessInstanceCommand
– SignalCommand
– CancelProcessInstanceCommand
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
137. Na camada do Jbpm: ESBNode
• Podemos desenhar os processos de negócios, onde
um dos nós do processo pode ser exatamente a
representação de um serviço.
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
138. ESBService Node
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
139. Quickstarts & Labs
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
143. WebServices no JBoss ESB
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
144. Valores da Solução
• Transporte
– HTTP, SMTP, JMS
• Padronização de Dados
– XML
• Soluções Leves podem ser usadas
– XML sobre HTTP
• Padrões de Mercado : XML é a chave
– WSDL : definição
– UDDI : registro
– SOAP : Protocolo @ Alguns direitos Reservados
http://www.edgarsilva.com.br
145. SOAP
• Simple Object Access Protocol
• Sucesso de Mercado há mais de 1 decada
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
146. De acordo com a W3C spec
• SOAP is a lightweight protocol for exchange of
information in a decentralized, distributed
environment. It is an XML based protocol that
consists of three parts:
– an envelope that defines a framework for describing what is
in a message and how to process it
– a set of encoding rules for expressing instances of
application-defined datatypes
– a convention for representing remote procedure calls and
responses.
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
147. JSR 181
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
148. Anotações JSR 181
• @WebService
– Faz com que uma classe Java “ vire” um WS
• @WebMethod
– Identifica um método do WS dentro da classe
• @SOAPBinding
– Configura o modo SOAP de exposição
• @WebParam
– Personaliza o mapeamento de um paremetro
• @WebReturn
@ Alguns direitos Reservados
– Personaliza um mapeamento de retorno
http://www.edgarsilva.com.br
149. Cont.
@WebService pode anotar uma classe ou interface
@WebMethod pode anotar um método
@WebParam pode anotar parametros
@WebResult pode anotar o retorno
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
150. WebServices e o JBoss ESB
• InBound
– Produtores de Serviços – Dentro do barramento
– Exposição de Serviços via WebService
• Outbound
– Consumidores de Serviços – Fora do barramento
– Centralizadores de Serviços
– Orquestração
– Interoperabilidade .net por exemplo
@ Alguns direitos Reservados
http://www.edgarsilva.com.br
151. Inboud WebServices
• O JBoss ESB pode ser seu repositório de Serviços
• O JBoss ESB tem a capacidade de trafegar uma
Mensagem SOAP dentro do barramento de Serviço,
convertendo-a para uma mensagem de
conhecimento para os serviços do ESB.
152. Quickstart: webservice_producer
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.Oneway;
import javax.jws.WebParam; O JBoss ESB vai injetar
import org.jboss.soa.esb.message.Message; esta mensagem neste
import org.jboss.soa.esb.actions.soap.SOAPProcessor; ponto em nosso
WebService, quando ele
@WebService(name = quot;GoodbyeWorldWSquot;, for chamado por um
Gateway ou via um
targetNamespace=quot;http://webservice_producer/goodbyeworldquot;)
envelope SOAP
// @SOAPBinding(style = SOAPBinding.Style.RPC)
public class GoodbyeWorldWS {
@WebMethod
public String sayGoodbye(@WebParam(name=quot;messagequot;) String message) {
Message esbMessage = SOAPProcessor.getMessage();
if(esbMessage != null) {
System.out.println(quot;**** SOAPRequest perhaps mediated by ESB:nquot; +
esbMessage.getBody().get());
}
System.out.println(quot;Web Service Parameter - message=quot; + message);
return quot;... Ah Goodbye then!!!! - quot; + message;
}
}
153. WebService e o WAR file com a JSR 118
<?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
<web-app xmlns=quot;http://java.sun.com/xml/ns/j2eequot;
xmlns:xsi=quot;http://www.w3.org/2001/XMLSchema-instancequot;
xsi:schemaLocation=quot;http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsdquot;
version=quot;2.4quot;>
<servlet>
<servlet-name>GoodbyeWorldWS</servlet-name>
<servlet-class>meu.meupacote.GoodbyeWorldWS</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GoodbyeWorldWS</servlet-name>
<url-pattern>/GoodbyeWorldWS</url-pattern>
</servlet-mapping>
</web-app>
161. Funcionando no SoapUI :)
• Você pode provar que o seu serviço está aderente ao
padrão WebServices
• Ponto de partida para interoperabilidade com outras
plataformas
163. JBoss ESB colaborando com
Serviços Externos
Evento Acontece....
Gateway passa a Mensagem para dentro do ESB
JBoss ESB
Action converte de TXT Action Envoca um
para XML WebService Action que
para completar dados Salva no
da Transação Banco de Dados
para gerar o objeto Java
Mundo .net
WebService .net
164. Questões importantes de observações
• Tipos complexos do mundo WebServices/XML
• Mecanismos de Segurança (NTLM, Kerberos etc)
• Federação de WebServices
168. JBoss ESB
• Uma ótima solução que reúne o melhor dos dois
mundos:
– Código Aberto (opensource)
– Suporte de Fornecedor (Subscription)
– No Brasil :
• JBoss, a division of Red Hat
• Red Hat Brasil
– 55 11 3529-6000
– http://www.br.redhat.com/jboss
169. Revisão de Aprendizado
• Você agora deve se sentir apto para:
– Compreender e explicar as necessidades de um ESB/ Barramento de
Serviços
– Compreender os Conceitos de Eventos(EDA), e como responder via
Serviços
– Instalar e executar o JBoss ESB
– Gateways, ESB Unaware e Aware Messages, Serviços, Listeners,
Actions out-of-the-box e Actions personalizadas
– Uso do JBoss ESB com um engine de Regras
– Uso do JBoss ESB junto com um orquestrador como Jbpm
– Uso de JBoss ESB e WebServices
170. Outros Workshops SOA
• Consulte
– SOAWorkShop – Educando profissionais SOA
• http://soaworkshop.wordpress.com
– SOA & JBoss ESB
– Breve: SOA & BPM
– Breve: SOA e Governança opensource