@ Alguns direitos Reservados
http://www.edgarsilva.com.br
Bem vindo ao Workshop SOA

• Objetivo:
  – Fazer com que a audiência compreenda os principais
    conceitos de Arquitetura...
Instrutor

            Edgar A. Silva
              – edgar.silva@gmail.com
              – http://www.edgarsilva.com.br
 ...
Softwares que vão ser usados neste
Workshop
•   Eclipse Ganymed
•   JBoss Tools
•   JBoss ESB Server 4.4 GA
•   Opcionais:...
Agenda

•   Visão Geral de Arquitetura Orientada a                       •     E
                                         ...
Planejamento

• Início: 09:00
• Break: 10:30 (10 minutos)
  B
• Almoço: 13:00
• Retorno: 14:00
• Break: 16:20 (15 minutos)...
Visão Geral de
Arquitetura Orientada a Serviços
S
SOA (Service Oriented Architecture)




                             @ A...
SOA Transformou TI em Tecnologia da Inovação

• Respostas mais rápidas
• Aceitação das
  Mudanças
• Foco em entrega de
  V...
O que SOA é então?
• Arquitetura Orientada a Serviços - SOA
  – Um modelo Arquitetural que visa proporcionar resiliência,
...
Enão o que SOA não é?
                                • Uma Solução vendida em
                                  Caixinha
...
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...
Soluções de Tecnologia OSS para SOA
• Enterprise Service Bus - ESB
  – JBoss ESB, Mule, Apache ServiceMix
• BPM
  – JBoss ...
Foco do Workshop

• ESB (Enterprise Service Bus)
  E
  – JBoss ESB




                      @ Alguns direitos Reservados
...
WebServices:
Até onde eles vão e quais suas maiores limitações




              @ Alguns direitos Reservados
            ...
WebServices

• Alternativa bem sucedida em termos de RPC
• Contract Enforcement (WSDL, XSD)
• Stateless (Http)
  S
• SOAP
...
Stacks Java para WebServices

• Sun Metro
  – https://metro.dev.java.net/
• Apache CXF
  – http://cxf.apache.org/
• JBossW...
WebServices nos dias de hoje

• EJB 3.0
  – Suporte a anotações sobre os POJOs
  – Capacidade de expor um EJB como um endp...
WebServices são formidáveis porém....
• Da mesma forma que você resolve inúmeros
  problemas complexos com WebServices, el...
Alternativas ao WebServices

• Soluções dos “ velhos tempos” muito comum em C++,
  PHP e outras soluções:
  – XML-RPC
• Di...
Conclusão WebServices

• Grandes meios de ponto de exposição de
           E
  Serviços(Endpoints)
• Ótima solução de Inte...
Pense bem também em:

• Oferecer diferentes possibilidade de acesso aos seus
  serviços e não só WebServices
  – REST, Htt...
Visão Geral dos EIPs




                  @ Alguns direitos Reservados
                  http://www.edgarsilva.com.br
EAI como Disciplina de SOA

                                                   • Necessidade de Integrações entre
        ...
Enterprise Integration Patterns




               @ Alguns direitos Reservados
               http://www.edgarsilva.com.br
Estrutura de um EAI Pattern
                   Splitter




Contexto:
Um cenário para ser processado deve ser tratado como...
Conceitos de
Programação Orientada a Mensagens e
                              MOMs




           @ Alguns direitos Reser...
Programação Assíncrona

• Tradicional:
  – Requisita => Espera Resposta
• Assíncrona:
  – Requisita=>Não Espera => Após te...
Mensagens – JMS (Java Message Services)
M

• Poder de trocar informações de forma assíncrona
• Publicação de Mensagens
• C...
JBoss Messaging 2.0_alpha - Benchmark




                 @ Alguns direitos Reservados
                 http://www.edgars...
JMS

• Usado em larga escala em integrações e aplicações
  críticas, principalmente em bancos e grandes
  empresas.
• Meio...
Enterprise Services Bus - ESB
 • Uma forma de intregar padrões de
   comunicação, tranformação e roteamento entre
   servi...
JBoss ESB
• Roteamento
    – Baseado em Conteúdo (CBR)
      B
    – Lista de Destinos (Static routing)
      L
• Orquestr...
Enterprise Service Bus

• Barramento de Serviços
  – Escutar os eventos dentro dos protocolos
  – Responder com Ações
  – ...
ESB: Visão Tradicional




                  @ Alguns direitos Reservados
                  http://www.edgarsilva.com.br
Visão JBoss ESB


      G
      Governança SOA (RAS, APM, Regras, DSLs)




                      @ Alguns direitos Reserv...
Necessidade de um ESB

• Você precisa de integração, mas precisa se focar no
  negócio e não como Java gerencia um socket ...
Como a maioria dos ESB's funcionam

     Um Serviço
   fica registrado
 no ESB de alguma
        forma.

                 ...
Cenários ESB


Pasta
 X




         JBoss ESB




        DB
             @ Alguns direitos Reservados
             http:...
Instalando o JBoss ESB

• Realizando o Download do JBoss ESB Server
• Realizando o Download do JBoss ESB
• Baixando os Fon...
Instalando o JBoss ESB

• Realizando o Download do JBoss ESB Server
• Realizando o Download do JBoss ESB
• Baixando os Fon...
JBoss ESB Server

• http://www.jboss.org/jbossesb/downloads/
• Utilize o JBoss Esb Server <VERSAO>
  – Forma mais simples ...
Instalando o JBoss ESB

• Realizando o Download do JBoss ESB Server
• Realizando o Download do JBoss ESB
• Baixando os Fon...
JBoss ESB

• Se você precisar instalar em um JBoss App Server,
  você vai executar um script ant para isto:
• Na pasta ins...
Instalando o JBoss ESB

• Realizando o Download do JBoss ESB Server
• Realizando o Download do JBoss ESB
• Baixando os Fon...
JBoss ESB acesso ao SVN

• http://www.jboss.org/jbossesb/subversion.html
• Cliente SVN
• Comandos:
  – svn co http://anons...
“ Run Forest, run...”




                        @ Alguns direitos Reservados
                        http://www.edgarsil...
Executando o JBoss ESB pela primeira vez

• <Jboss_ESB_Install_dir>/bin/run.sh




                      @ Alguns direitos...
Estrutura do JBoss ESB

• |-- bin (binário do App Server)
  |
• |-- client (bibliotecas cliente)
  |
• |-- docs (Documenta...
QuickStarts

• install_dir/samples/quickstarts
  – Inúmeros exemplos para cenários reais onde você pode
    aplicar o uso ...
ESBGEN

• esbgen.sh
    – É basicamente uma simples ferramenta que cria um projeto
      básico com suas bibliotecas reque...
Usando o esbgen




                  @ Alguns direitos Reservados
                  http://www.edgarsilva.com.br
A primeira Aplicação JBoss ESB




                 @ Alguns direitos Reservados
                 http://www.edgarsilva.co...
Ingredientes de um Projeto ESB

• build.xml – Script ANT
• jbm-queue-service.xml – Definição das filas JMS
• deployment.xm...
Providers no JBoss ESB
(
(protocolos de escuta de serviço)




                                    @ Alguns direitos Reser...
Provider

• Do inglês:
  – Provider Pro*vidquot;er, n.
     • One who provides, furnishes, or supplies; one who
       pro...
Providers no JBoss ESB

• São os “ protocolos” onde os eventos de Integração
  podem acontecer
• Event-Driven Architecture...
JBoss ESB possui os seguintes providers
Protocolos de Escuta

• JMSProvider
• FSProvider
• FTPProvider                    ...
Clientes “ Aware” e “ Unaware” para
o JBoss ESB




                    @ Alguns direitos Reservados
                    h...
Na doc do JBoss ESB estes conceitos
aparecem bastante
• As informações publicadas nos providers são
  tratadas como Mensag...
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 x...
ESB Aware

• O JBoss ESB possui um formato para suas
  mensagens, uma vez esta mensagem dentro do
  barramento (pipeline),...
ESB Message/ SOAP Message
                                                <xs:complexType name=quot;Envelopequot;>
public ...
JBoss ESB Gateways

• São providers que vão servir de porta de entrada
  para clientes “ Unaware”




                    ...
Gateways para ESB Message

 PHP
 Client



 Cobol      Gateway                                                 ESB
       ...
Visualizando os
Providers no jboss-esb.xml




                  @ Alguns direitos Reservados
                  http://www...
Declarando Serviços




                 @ Alguns direitos Reservados
                 http://www.edgarsilva.com.br
Declarando Serviços

<services>
  <service category=quot;Simplesquot;
           name=quot;MySimpleServicequot;>
     ...
...
Declarando Listeners de Serviços

<listeners>
  <jms-listener name=quot;JMS-Gatewayquot;
              busidref=quot;myesb...
Declarando Actions do
JBoss ESB




                 @ Alguns direitos Reservados
                 http://www.edgarsilva.c...
Declarando ESBActions

<actions mep=quot;OneWayquot;>

 <action name=quot;dumpquot;
 class=quot;org.jboss.soa.esb.actions....
Visualiazando a Árvore que forma um
Serviço
• Há Providers
• Há Serviços
  – Que possuem Listeners
  – Estes Listeners esc...
Actions “ Out-of-the-box” no
JBoss ESB




                   @ Alguns direitos Reservados
                   http://www.e...
Actions

• O JBoss ESB possui várias Actions prontas que
  respondem aos eventos que acontecem nos
  providers
• Estas Act...
Actions
V
Veja Programmers Guide (Pág 80 a 111)


•   Transformers & Converters                           •     PersistAct...
Utilizando Actions do JBoss ESB

• Sempre consulte o catálogo de Action já prontas
  antes de começar uma do zero.
• Actio...
Exemplo de Action de Transformação

• Smooks – Framework codehaus
• org.jboss.soa.esb.smooks.SmooksAction




            ...
Caso de Uso

• Transformar um arquivo TXT em XML
• Conteúdo do Arquivo:


compras.edgarsilva.2812072359.txt
12313109090319...
Smooks em Ação
<?xml version='1.0' encoding='UTF-8'?>
<smooks-resource-list xmlns=quot;http://www.milyn.org/xsd/smooks-1.0...
Ações Smooks
Aqui cai como CSV:
<action
   class=quot;org.jboss.soa.esb.smooks.SmooksActionquot;
   name=quot;transform-fr...
Actions Personalizadas




                 @ Alguns direitos Reservados
                 http://www.edgarsilva.com.br
Actions Personalizadas

• Implementar a interface:
  – org.jboss.soa.esb.actions.ActionPipelineProcessor
  – org.jboss.soa...
Regras para as Actions

• Ao herdarem de AbstractActionLifeCycle devem:
  – Receber um ConfigTree no Construtor
  – Ter um...
Exemplo de Action
import org.jboss.soa.esb.actions.AbstractActionLifecycle;
import org.jboss.soa.esb.helpers.ConfigTree;
i...
Laboratórios & Demos

Quickstarts




                @ Alguns direitos Reservados
                http://www.edgarsilva.c...
Quickstarts

• helloworld_action
• helloworld_db_registration
• helloworld_file_action
• helloworld_ftp_action
• helloworl...
Material de Documentação neste ponto

• JBoss ESB Programmers Guide
  – esb_install_dir/docs/ProgrammersGuide.pdf




    ...
Lab 1
Criando um Projeto ESB com esbgen




                @ Alguns direitos Reservados
                http://www.edgars...
Solução

• Configurar o esbgen e Apache ANT
• Chamar o esbgen
  – Confirmar a workspace
  – Informar o nome workshoplab1 n...
Cont.

• Vá no esb_install_dir/bin/ e inicie o ESB server via o
  comando ./run.sh ou run
• Vá até o diretório workshoplab...
Resumo da Solução - jboss-esb.xml
 <?xml version = quot;1.0quot; encoding = quot;UTF-8quot;?>
 <jbossesb
 xmlns=quot;http:...
Resumo da Solução - jboss-esb.xml
 <services>

 <service category=quot;workshoplab1ESBServicequot; name=quot;workshoplab1E...
Resumo da Solução - jboss-esb.xml
 <?xml version = quot;1.0quot; encoding = quot;UTF-8quot;?>
 <jbossesb
 xmlns=quot;http:...
jbm-queue-service.xml (Filas JMS)
j
<?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
<server>
  <mbean code=quot;org...
Criando uma Action




                 @ Alguns direitos Reservados
                 http://www.edgarsilva.com.br
WorkshopAction
package org.demo.workshoplab1;

import org.jboss.soa.esb.actions.AbstractActionLifecycle;
import org.jboss....
Plugando a Action no Serviço do ESB




                 @ Alguns direitos Reservados
                 http://www.edgarsil...
Plugando a Action ao Serviço
 <actions mep=quot;OneWayquot;>
   <action class=quot;org.jboss.soa.esb.actions.SystemPrintln...
Entendendo o empacotamento .esb




                @ Alguns direitos Reservados
                http://www.edgarsilva.com...
Empacotamento .esb

• No JBoss ESB, o(s) serviço(s) são “ deployados” com
  a extensão .esb
• Um .esb é um Archive como um...
Estrutura do .esb

├───METAINF
│ ├───jbossesb.xml (descritor dos serviços)
      j
│ ├───deployment.xml (dependência de de...
Actions baseadas em Annotations

• http://ankiewsky.blogspot.com/2008/09/posos-plain-old-services-objects-in.html
• Possív...
Integração
JBoss ESB
com o Drools




               @ Alguns direitos Reservados
               http://www.edgarsilva.com...
Drools
http://www.jboss.org/drools/




                  @ Alguns direitos Reservados
                  http://www.edgars...
Drools
• Engine de Regras
• Permite separar regras de negócios das outras
  atividades.
• Atualização “ hot” de Regras.
• ...
Drools Guvnor

• Interface Web de Gerenciamento de Regras de
  Negócios Java
• Repositório de Regras
• AtomPub, JCR, WebDa...
Importância para o ESB

• CBRs
• Regras em Gerais para implementações de vários
  EIPs
• Validações
• Permissões
• Re/Enca...
Drools Guvnor: Login




                 @ Alguns direitos Reservados
                 http://www.edgarsilva.com.br
Drools: Tela Principal




                   @ Alguns direitos Reservados
                   http://www.edgarsilva.com.br
Drools: “ Ativos” de Regras




                    @ Alguns direitos Reservados
                    http://www.edgarsilva...
Drools: “ Ativos” de Regras




                    @ Alguns direitos Reservados
                    http://www.edgarsilva...
Drools: Edição de Regras




                  @ Alguns direitos Reservados
                  http://www.edgarsilva.com.br
Drools: Edição de DSLs




                  @ Alguns direitos Reservados
                  http://www.edgarsilva.com.br
Drools: Repositórios




                  @ Alguns direitos Reservados
                  http://www.edgarsilva.com.br
Arquiteturas


 Provider




            JBoss ESB




                   Action


                            @ Alguns di...
Exemplo Drools
try {
     Properties props = new Properties();
     props.load(OrderRunner.class.getResourceAsStream(quot;...
Guvnor.properties
url=http://192.168.161.1:8080/drools-
guvnor/org.drools.guvnor.Guvnor/package/org.acme.ordermanagement/
...
ESB & BPM




            @ Alguns direitos Reservados
            http://www.edgarsilva.com.br
Business Process Management - BPM

• Quando falamos de BPM em nível de serviços o
  sentido está em buscar uma forma de or...
Business Process Management

• Gerenciar Processos de Negócios em resumo:
  – Workflows
  – Gerenciar Estado+Informações
 ...
JBoss jBPM
Arquitetura do Projeto




Abstração de qualquer linguagem de Processo



                              @ Algun...
JBoss jBPM 3.2
• Permite Gerenciamento de Processos de Negócios de forma visual e via
  código(xml).
• Processos podem ser...
Boas soluções de BPM devem Possibilitar ...
 Que uma pessoa não
 técnica possa criar                                    Qu...
Como o jBPM é visto Atualmente?

                                                              Excelente!
                ...
Problemas das ferramentas de BPM
• Algumas muito boas no Desenho, porém fracas em
  Execução
• Outras muito boas mas somen...
JBpm: Opção #1 ao embarcar soluções de
Workflow/BPM




                 @ Alguns direitos Reservados
                 htt...
JBpm: Casos de Uso

• Como motor de processos e aplicações
• Exemplo de uso com Microsoft .net



      Cliente Asp.Net   ...
jBpm: Casos de Uso

• Como motor de Processos
• Cliente habilitando SOA na sua empresa


      V
      Vários Clientes (Ja...
JBpm : Framework

• Oferece um framework sofisticado para tratamento
  de processos de negócios e workflow
• Fácil aprendi...
JBpm: Designer

• Plugins do Eclipse
• Permite que o desenvolvedor traduza o desenho do
  processo de quaquer linguagem pa...
jBpm: Designer




                 @ Alguns direitos Reservados
                 http://www.edgarsilva.com.br
jBpm: Console
• Ferramenta Web que permite:
  – Visualizar os Processos Instalados e suas versões
  – Visualizar as instân...
jBpm: Console




                @ Alguns direitos Reservados
                http://www.edgarsilva.com.br
Orquestrando Processos com jBPM
no JBoss ESB




                @ Alguns direitos Reservados
                http://www.e...
Camada: JBoss ESB

• 1. Service Orchestration
• 2. Human Task Management




                  @ Alguns direitos Reservado...
JbpmAction : JBoss ESB
<action
     class=quot;org.jboss.soa.esb.services.jbpm.actions.BpmProcessorquot;

    name=quot;$A...
JbpmAction : JBoss ESB

org.jboss.soa.esb.services.jbpm.actions.BpmProcessor
•Esta Action é responsável por gerenciar a ex...
Na camada do Jbpm: ESBNode

• Podemos desenhar os processos de negócios, onde
  um dos nós do processo pode ser exatamente...
ESBService Node




                  @ Alguns direitos Reservados
                  http://www.edgarsilva.com.br
Quickstarts & Labs




                 @ Alguns direitos Reservados
                 http://www.edgarsilva.com.br
QuickStarts

• bpm_orchestration1
• bpm_orchestration2
• bpm_orchestration3
• bpm_orchestration4




                     ...
Documentação

• esb_install_dir/doc/Service Doc.pdf
• Páginas 49 a 59




                       @ Alguns direitos Reserva...
Lab

Demonstração de BPM + ESB




                @ Alguns direitos Reservados
                http://www.edgarsilva.com....
WebServices no JBoss ESB




                @ Alguns direitos Reservados
                http://www.edgarsilva.com.br
Valores da Solução

• Transporte
   – HTTP, SMTP, JMS
• Padronização de Dados
   – XML
• Soluções Leves podem ser usadas
 ...
SOAP

• Simple Object Access Protocol
• Sucesso de Mercado há mais de 1 decada




                      @ Alguns direitos...
De acordo com a W3C spec

• SOAP is a lightweight protocol for exchange of
  information in a decentralized, distributed
 ...
JSR 181




          @ Alguns direitos Reservados
          http://www.edgarsilva.com.br
Anotações JSR 181

• @WebService
  – Faz com que uma classe Java “ vire” um WS
• @WebMethod
  – Identifica um método do WS...
Cont.

 @WebService pode anotar uma classe ou interface
 @WebMethod pode anotar um método
 @WebParam pode anotar parame...
WebServices e o JBoss ESB

• InBound
  – Produtores de Serviços – Dentro do barramento
  – Exposição de Serviços via WebSe...
Inboud WebServices

• O JBoss ESB pode ser seu repositório de Serviços
• O JBoss ESB tem a capacidade de trafegar uma
  Me...
Quickstart: webservice_producer
import   javax.jws.WebService;
import   javax.jws.WebMethod;
import   javax.jws.Oneway;
im...
WebService e o WAR file com a JSR 118
<?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>


<web-app xmlns=quot;http://...
Relação Classe Java com web.xml
                                                                                  <?xml ve...
Expondo o WebService como Serviço
jboss-esb.xml
 <action name=quot;JBossWSAdapterquot;

 class=quot;org.jboss.soa.esb.acti...
Visualizando o Contrato do WSDL
http://localhost:8080/contract
Visualizando o Contrato do WSDL
http://localhost:8080/contract
Testando com SoapUI
Saída no JBoss ESB
Volta no SoapUI
Funcionando no SoapUI :)

• Você pode provar que o seu serviço está aderente ao
  padrão WebServices
• Ponto de partida pa...
WebServices “ OutBound”
JBoss ESB colaborando com
Serviços Externos

    Evento Acontece....


                                                   ...
Questões importantes de observações

• Tipos complexos do mundo WebServices/XML
• Mecanismos de Segurança (NTLM, Kerberos ...
Quickstart: webservice_consumer1

• Consome um WebService de dentro do JBoss ESB,
  mas poderia ser qualquer outro
Action SOAPClient
<action name=quot;soapui-client-actionquot;
class=quot;org.jboss.soa.esb.actions.soap.SOAPClientquot;>
<...
Conclusões
JBoss ESB

• Uma ótima solução que reúne o melhor dos dois
  mundos:
  – Código Aberto (opensource)
  – Suporte de Fornece...
Revisão de Aprendizado

• Você agora deve se sentir apto para:
  – Compreender e explicar as necessidades de um ESB/ Barra...
Outros Workshops SOA

• Consulte
  – SOAWorkShop – Educando profissionais SOA
    • http://soaworkshop.wordpress.com
  – S...
Próximos SlideShares
Carregando em…5
×

SOA Workshop - JBoss ESB v1.1

4.472 visualizações

Publicada em

Material do Workshop de JBoss ESB
Autor: Edgar Silva
Revisor: Ricardo Ferreira

Publicada em: Tecnologia
  • Seja o primeiro a comentar

SOA Workshop - JBoss ESB v1.1

  1. 1. @ Alguns direitos Reservados http://www.edgarsilva.com.br
  2. 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. 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. 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. 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. 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. 7. Visão Geral de Arquitetura Orientada a Serviços S SOA (Service Oriented Architecture) @ Alguns direitos Reservados http://www.edgarsilva.com.br
  8. 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. 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. 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. 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. 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. 13. Foco do Workshop • ESB (Enterprise Service Bus) E – JBoss ESB @ Alguns direitos Reservados http://www.edgarsilva.com.br
  14. 14. WebServices: Até onde eles vão e quais suas maiores limitações @ Alguns direitos Reservados http://www.edgarsilva.com.br
  15. 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. 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. 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. 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. 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. 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. 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. 22. Visão Geral dos EIPs @ Alguns direitos Reservados http://www.edgarsilva.com.br
  23. 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
  24. 24. Enterprise Integration Patterns @ Alguns direitos Reservados http://www.edgarsilva.com.br
  25. 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
  26. 26. Conceitos de Programação Orientada a Mensagens e MOMs @ Alguns direitos Reservados http://www.edgarsilva.com.br
  27. 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. 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
  29. 29. JBoss Messaging 2.0_alpha - Benchmark @ Alguns direitos Reservados http://www.edgarsilva.com.br
  30. 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. 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. 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. 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
  34. 34. ESB: Visão Tradicional @ Alguns direitos Reservados http://www.edgarsilva.com.br
  35. 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. 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. 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. 38. Cenários ESB Pasta X JBoss ESB DB @ Alguns direitos Reservados http://www.edgarsilva.com.br
  39. 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. 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. 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. 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. 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. 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. 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. 46. “ Run Forest, run...” @ Alguns direitos Reservados http://www.edgarsilva.com.br
  47. 47. Executando o JBoss ESB pela primeira vez • <Jboss_ESB_Install_dir>/bin/run.sh @ Alguns direitos Reservados http://www.edgarsilva.com.br
  48. 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. 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. 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. 51. Usando o esbgen @ Alguns direitos Reservados http://www.edgarsilva.com.br
  52. 52. A primeira Aplicação JBoss ESB @ Alguns direitos Reservados http://www.edgarsilva.com.br
  53. 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. 54. Providers no JBoss ESB ( (protocolos de escuta de serviço) @ Alguns direitos Reservados http://www.edgarsilva.com.br
  55. 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. 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. 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. 58. Clientes “ Aware” e “ Unaware” para o JBoss ESB @ Alguns direitos Reservados http://www.edgarsilva.com.br
  59. 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. 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. 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. 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. 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. 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
  65. 65. Visualizando os Providers no jboss-esb.xml @ Alguns direitos Reservados http://www.edgarsilva.com.br
  66. 66. Declarando Serviços @ Alguns direitos Reservados http://www.edgarsilva.com.br
  67. 67. Declarando Serviços <services> <service category=quot;Simplesquot; name=quot;MySimpleServicequot;> ... </service> </services> @ Alguns direitos Reservados http://www.edgarsilva.com.br
  68. 68. Declarando Listeners de Serviços <listeners> <jms-listener name=quot;JMS-Gatewayquot; busidref=quot;myesbprojectsimpleGwChannelquot; maxThreads=quot;1quot; is-gateway=quot;truequot; /> <jms-listener name=quot;JMS-ESBAwarequot; busidref=quot;myesbprojectsimpleEsbChannelquot; maxThreads=quot;1quot; /> </listeners> @ Alguns direitos Reservados http://www.edgarsilva.com.br
  69. 69. Declarando Actions do JBoss ESB @ Alguns direitos Reservados http://www.edgarsilva.com.br
  70. 70. Declarando ESBActions <actions mep=quot;OneWayquot;> <action name=quot;dumpquot; class=quot;org.jboss.soa.esb.actions.SystemPrintlnquot;> <property name=quot;printfullquot; value=quot;truequot; /> </action> </actions> @ Alguns direitos Reservados http://www.edgarsilva.com.br
  71. 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
  72. 72. Actions “ Out-of-the-box” no JBoss ESB @ Alguns direitos Reservados http://www.edgarsilva.com.br
  73. 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. 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. 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. 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. 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
  78. 78. Smooks em Ação <?xml version='1.0' encoding='UTF-8'?> <smooks-resource-list xmlns=quot;http://www.milyn.org/xsd/smooks-1.0.xsdquot;> <profiles> <profile base-profile=quot;source-csvquot; /> <profile base-profile=quot;canonical-xmlquot; /> </profiles> <resource-config target-profile=quot;source-csvquot; selector=quot;org.xml.sax.driverquot;> <resource>org.milyn.csv.CSVParser</resource> <param name=quot;fieldsquot; type=quot;string-listquot;> transacao,valor </param> </resource-config> <resource-config target-profile=quot;canonical-xmlquot; selector=quot;csv-setquot;> <resource type=quot;xslquot;> <![CDATA[ <ROOT> <xsl:for-each select=quot;csv-recordquot;> <Transacao> <numero><xsl:value-of select=quot;transacaoquot;/></numero> <valor><xsl:value-of select=quot;valorquot;/></valor> </Transacao> </xsl:for-each> </ROOT> ]]> </resource> <param name=quot;is-xslt-templateletquot;>true</param> </resource-config> <!-- Popular Transacao --> <resource-config selector=quot;Transacaoquot;> <resource>org.milyn.javabean.BeanPopulator</resource> <param name=quot;beanIdquot;>transacao</param> <param name=quot;beanClassquot;>bpmesb.Transacao</param> <param name=quot;bindingsquot;> <binding property=quot;idquot; selector=quot;Transacao/@numeroquot; /> <binding property=quot;valorquot; selector=quot;Transacao/@valorquot; type=quot;Doublequot;/> </param> </resource-config> </smooks-resource-list> @ Alguns direitos Reservados http://www.edgarsilva.com.br
  79. 79. Ações Smooks Aqui cai como CSV: <action class=quot;org.jboss.soa.esb.smooks.SmooksActionquot; name=quot;transform-from-csvquot;> <property name=quot;smooksConfigquot; value=quot;/smooks-res.xmlquot;/> <property name=quot;messageProfilequot; value=quot;source-csvquot;/> </action> Depois Transforma para um XML estruturado <action class=quot;org.jboss.soa.esb.smooks.SmooksActionquot; name=quot;transform-to-xmlquot;> <property name=quot;smooksConfigquot; value=quot;/smooks-res.xmlquot;/> <property name=quot;messageProfilequot; value=quot;canonical-xmlquot;/> </action> @ Alguns direitos Reservados http://www.edgarsilva.com.br
  80. 80. Actions Personalizadas @ Alguns direitos Reservados http://www.edgarsilva.com.br
  81. 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. 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. 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
  84. 84. Laboratórios & Demos Quickstarts @ Alguns direitos Reservados http://www.edgarsilva.com.br
  85. 85. Quickstarts • helloworld_action • helloworld_db_registration • helloworld_file_action • helloworld_ftp_action • helloworld_hibernate_action • helloworld_sql_action @ Alguns direitos Reservados http://www.edgarsilva.com.br
  86. 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. 87. Lab 1 Criando um Projeto ESB com esbgen @ Alguns direitos Reservados http://www.edgarsilva.com.br
  88. 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. 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
  90. 90. Resumo da Solução - jboss-esb.xml <?xml version = quot;1.0quot; encoding = quot;UTF-8quot;?> <jbossesb xmlns=quot;http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbosse sb-1.0.1.xsdquot; parameterReloadSecs=quot;5quot;> <providers> <jms-provider name=quot;JBossMessagingquot; connection-factory=quot;ConnectionFactoryquot;> <jms-bus busid=quot;workshoplab1GwChannelquot;> <jms-message-filter dest-type=quot;QUEUEquot; dest-name=quot;queue/workshoplab1_GateWayquot; /> </jms-bus> <jms-bus busid=quot;workshoplab1EsbChannelquot;> <jms-message-filter dest-type=quot;QUEUEquot; dest-name=quot;queue/workshoplab1_ESBquot; /> </jms-bus> </jms-provider> </providers> @ Alguns direitos Reservados http://www.edgarsilva.com.br
  91. 91. Resumo da Solução - jboss-esb.xml <services> <service category=quot;workshoplab1ESBServicequot; name=quot;workshoplab1ESBServiceListenerquot; description=quot;Service Samplequot;> <listeners> <jms-listener name=quot;JMS-Gatewayquot; busidref=quot;workshoplab1GwChannelquot; maxThreads=quot;1quot; is-gateway=quot;truequot; /> <jms-listener name=quot;JMS-ESBListenerquot; busidref=quot;workshoplab1EsbChannelquot; maxThreads=quot;1quot; /> </listeners> <actions mep=quot;OneWayquot;> <action name=quot;dumpquot; class=quot;org.jboss.soa.esb.actions.SystemPrintlnquot;> <property name=quot;printfullquot; value=quot;truequot; /> </action> </actions> </service> </services> </jbossesb> @ Alguns direitos Reservados http://www.edgarsilva.com.br
  92. 92. Resumo da Solução - jboss-esb.xml <?xml version = quot;1.0quot; encoding = quot;UTF-8quot;?> <jbossesb xmlns=quot;http://anonsvn.labs.jboss.com/labs/jbossesb/tr unk/product/etc/schemas/xml/jbossesb-1.0.1.xsdquot; parameterReloadSecs=quot;5quot;> <providers> <jms-provider name=quot;JBossMessagingquot; connection- factory=quot;ConnectionFactoryquot;> <jms-bus busid=quot;workshoplab1GwChannelquot;> <jms-message-filter dest-type=quot;QUEUEquot; dest- name=quot;queue/workshoplab1_GateWayquot; /> </jms-bus> <jms-bus busid=quot;workshoplab1EsbChannelquot;> <jms-message-filter dest-type=quot;QUEUEquot; dest- name=quot;queue/workshoplab1_ESBquot; /> <services> </jms-bus> <service category=quot;workshoplab1ESBServicequot; name=quot;workshoplab1ESBServiceListenerquot; </jms-provider> description=quot;Service Samplequot;> </providers> <listeners> <jms-listener name=quot;JMS-Gatewayquot; busidref=quot;workshoplab1GwChannelquot; maxThreads=quot;1quot; is-gateway=quot;truequot; /> <jms-listener name=quot;JMS-ESBListenerquot; busidref=quot;workshoplab1EsbChannelquot; maxThreads=quot;1quot; /> </listeners> <actions mep=quot;OneWayquot;> <action name=quot;dumpquot; class=quot;org.jboss.soa.esb.actions.SystemPrintlnquot;> <property name=quot;printfullquot; value=quot;truequot; /> </action> </actions> </service> </services> </jbossesb> @ Alguns direitos Reservados http://www.edgarsilva.com.br
  93. 93. jbm-queue-service.xml (Filas JMS) j <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <server> <mbean code=quot;org.jboss.jms.server.destination.QueueServicequot; name=quot;jboss.esb.workshoplab1.destination:service=Queue,name=workshoplab1_GateWayquot; xmbean-dd=quot;xmdesc/Queue-xmbean.xmlquot;> <depends optional-attribute- name=quot;ServerPeerquot;>jboss.messaging:service=ServerPeer</depends> <depends>jboss.messaging:service=PostOffice</depends> </mbean> <mbean code=quot;org.jboss.jms.server.destination.QueueServicequot; name=quot;jboss.esb.workshoplab1.destination:service=Queue,name=workshoplab1_ESBquot; xmbean-dd=quot;xmdesc/Queue-xmbean.xmlquot;> <depends optional-attribute- name=quot;ServerPeerquot;>jboss.messaging:service=ServerPeer</depends> <depends>jboss.messaging:service=PostOffice</depends> </mbean> </server> @ Alguns direitos Reservados http://www.edgarsilva.com.br
  94. 94. Criando uma Action @ Alguns direitos Reservados http://www.edgarsilva.com.br
  95. 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. 96. Plugando a Action no Serviço do ESB @ Alguns direitos Reservados http://www.edgarsilva.com.br
  97. 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
  98. 98. Entendendo o empacotamento .esb @ Alguns direitos Reservados http://www.edgarsilva.com.br
  99. 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. 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. 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
  102. 102. Integração JBoss ESB com o Drools @ Alguns direitos Reservados http://www.edgarsilva.com.br
  103. 103. Drools http://www.jboss.org/drools/ @ Alguns direitos Reservados http://www.edgarsilva.com.br
  104. 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. 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. 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
  107. 107. Drools Guvnor: Login @ Alguns direitos Reservados http://www.edgarsilva.com.br
  108. 108. Drools: Tela Principal @ Alguns direitos Reservados http://www.edgarsilva.com.br
  109. 109. Drools: “ Ativos” de Regras @ Alguns direitos Reservados http://www.edgarsilva.com.br
  110. 110. Drools: “ Ativos” de Regras @ Alguns direitos Reservados http://www.edgarsilva.com.br
  111. 111. Drools: Edição de Regras @ Alguns direitos Reservados http://www.edgarsilva.com.br
  112. 112. Drools: Edição de DSLs @ Alguns direitos Reservados http://www.edgarsilva.com.br
  113. 113. Drools: Repositórios @ Alguns direitos Reservados http://www.edgarsilva.com.br
  114. 114. Arquiteturas Provider JBoss ESB Action @ Alguns direitos Reservados http://www.edgarsilva.com.br
  115. 115. Exemplo Drools try { Properties props = new Properties(); props.load(OrderRunner.class.getResourceAsStream(quot;Guvnor.propertiesquot;)); RuleAgent agent = RuleAgent.newRuleAgent(props); RuleBase ruleBase = agent.getRuleBase(); WorkingMemory workingMemory = ruleBase.newStatefulSession(); Customer customer = new Customer(); customer.setFirstName(quot;Edgarquot;); customer.setLastName(quot;Silvaquot;); customer.setStatus(9); OrderHeader order = new OrderHeader(); order.setOrderDiscount(0); order.setOrderPriority(1); order.setTax(17.2); workingMemory.insert(customer); workingMemory.insert(order); System.out.println(quot;See the Tax: quot; + order.getTax()); workingMemory.fireAllRules(); System.out.println(quot;See the Discount: quot; + order.getOrderDiscount()); System.out.print(quot;See the changed Tax: quot; + order.getTax()); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } @ Alguns direitos Reservados http://www.edgarsilva.com.br
  116. 116. Guvnor.properties url=http://192.168.161.1:8080/drools- guvnor/org.drools.guvnor.Guvnor/package/org.acme.ordermanagement/ LATEST #file=/opt/java/eclipse/workspace/fidelity/src/main/java/org.acme .fidelity.pkg @ Alguns direitos Reservados http://www.edgarsilva.com.br
  117. 117. ESB & BPM @ Alguns direitos Reservados http://www.edgarsilva.com.br
  118. 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. 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. 120. JBoss jBPM Arquitetura do Projeto Abstração de qualquer linguagem de Processo @ Alguns direitos Reservados http://www.edgarsilva.com.br
  121. 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. 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. 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. 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. 125. JBpm: Opção #1 ao embarcar soluções de Workflow/BPM @ Alguns direitos Reservados http://www.edgarsilva.com.br
  126. 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. 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. 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. 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. 130. jBpm: Designer @ Alguns direitos Reservados http://www.edgarsilva.com.br
  131. 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. 132. jBpm: Console @ Alguns direitos Reservados http://www.edgarsilva.com.br
  133. 133. Orquestrando Processos com jBPM no JBoss ESB @ Alguns direitos Reservados http://www.edgarsilva.com.br
  134. 134. Camada: JBoss ESB • 1. Service Orchestration • 2. Human Task Management @ Alguns direitos Reservados http://www.edgarsilva.com.br
  135. 135. JbpmAction : JBoss ESB <action class=quot;org.jboss.soa.esb.services.jbpm.actions.BpmProcessorquot; name=quot;$ActionJBPMquot;> <property name=quot;commandquot; value=quot;StartProcessInstanceCommandquot; /> <property name=quot;process-definition-namequot; value=quot;$PROCESSO JBPMquot; /> <property name=quot;keyquot; value=quot;body.businessKeyquot; /> <property name=quot;esbToBpmVarsquot;> <mapping bpm=quot;xmlquot; esb=quot;BODY_CONTENTquot; /> </property> </action> @ Alguns direitos Reservados http://www.edgarsilva.com.br
  136. 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. 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. 138. ESBService Node @ Alguns direitos Reservados http://www.edgarsilva.com.br
  139. 139. Quickstarts & Labs @ Alguns direitos Reservados http://www.edgarsilva.com.br
  140. 140. QuickStarts • bpm_orchestration1 • bpm_orchestration2 • bpm_orchestration3 • bpm_orchestration4 @ Alguns direitos Reservados http://www.edgarsilva.com.br
  141. 141. Documentação • esb_install_dir/doc/Service Doc.pdf • Páginas 49 a 59 @ Alguns direitos Reservados http://www.edgarsilva.com.br
  142. 142. Lab Demonstração de BPM + ESB @ Alguns direitos Reservados http://www.edgarsilva.com.br
  143. 143. WebServices no JBoss ESB @ Alguns direitos Reservados http://www.edgarsilva.com.br
  144. 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. 145. SOAP • Simple Object Access Protocol • Sucesso de Mercado há mais de 1 decada @ Alguns direitos Reservados http://www.edgarsilva.com.br
  146. 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. 147. JSR 181 @ Alguns direitos Reservados http://www.edgarsilva.com.br
  148. 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. 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. 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. 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. 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. 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>
  154. 154. Relação Classe Java com web.xml <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.Oneway; import javax.jws.WebParam; import org.jboss.soa.esb.message.Message; <web-app xmlns=quot;http://java.sun.com/xml/ns/j2ee import org.jboss.soa.esb.actions.soap.SOAPProcessor; instancequot; @WebService(name = quot;GoodbyeWorldWSquot;, xsi:schemaLocation=quot;http://java.sun.co targetNamespace=quot;http://webservice_producer/goodbyeworldquot;) http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd // @SOAPBinding(style = SOAPBinding.Style.RPC) version=quot;2.4quot;> public class GoodbyeWorldWS { @WebMethod <servlet> public String sayGoodbye(@WebParam(name=quot;messagequot;) String message) { <servlet-name>GoodbyeWorldWS</servlet-n <servlet-class>meu.meupacote.GoodbyeWor Message esbMessage = SOAPProcessor.getMessage(); </servlet> if(esbMessage != null) { System.out.println(quot;**** SOAPRequest perhaps mediated by ESB:nquot; + esbMessage.getBody().get()); <servlet-mapping> } <servlet-name>GoodbyeWorldWS</servlet-n System.out.println(quot;Web Service Parameter - message=quot; + message); return quot;... Ah Goodbye then!!!! - quot; + message; <url-pattern>/GoodbyeWorldWS</url-patte } </servlet-mapping> } </web-app>
  155. 155. Expondo o WebService como Serviço jboss-esb.xml <action name=quot;JBossWSAdapterquot; class=quot;org.jboss.soa.esb.actions.soap.SOAPProcessorquot;> <property name=quot;jbossws-endpointquot; value=quot;GoodbyeWorldWSquot;/> </action>
  156. 156. Visualizando o Contrato do WSDL http://localhost:8080/contract
  157. 157. Visualizando o Contrato do WSDL http://localhost:8080/contract
  158. 158. Testando com SoapUI
  159. 159. Saída no JBoss ESB
  160. 160. Volta no SoapUI
  161. 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
  162. 162. WebServices “ OutBound”
  163. 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. 164. Questões importantes de observações • Tipos complexos do mundo WebServices/XML • Mecanismos de Segurança (NTLM, Kerberos etc) • Federação de WebServices
  165. 165. Quickstart: webservice_consumer1 • Consome um WebService de dentro do JBoss ESB, mas poderia ser qualquer outro
  166. 166. Action SOAPClient <action name=quot;soapui-client-actionquot; class=quot;org.jboss.soa.esb.actions.soap.SOAPClientquot;> <property name=quot;wsdlquot; value=quot;http://127.0.0.1:8080/ws/HelloWorldWS?wsdlquot; /> <property name=quot;responseAsOgnlMapquot; value=quot;truequot; /> <property name=quot;SOAPActionquot; value=quot;sayHelloquot;/> </action>
  167. 167. Conclusões
  168. 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. 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. 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

×