SlideShare uma empresa Scribd logo
1 de 21
INTEGRAÇÃO DE
SISTEMAS
Uma visão geral sobre as
tecnologias disponíveis em
Java para várias formas de
integração de sistemas
O QUE VEREMOS POR AQUI
O que é, benefícios e desvantagens para:
- Java Message Service (JMS)
- Java EE Connector Architecture (JCA)
- Java API for XML-based Web Services (JAX-WS)
- Java API for RESTful Web Services (JAX-RS)
- Remote Method Invocation (Java/RMI)
JAVA MESSAGE SERVICE (JMS)
Benefícios:
- Fácil integração de sistemas incompatíveis
- Mensagens síncronas:
 Suporta reconhecimento de mensagens (entrega garantida)
 Suporte para transações (via JTA)
- Mensagens assíncronas:
 Como o volume de transações aumenta, asynchronous messaging is better
 Mensagem assíncrona é menos afetada por falhas em hardware, software e network
 Quando a capacidade de processamento é excedida, informações não são perdidas
JAVA MESSAGE SERVICE (JMS)
Desvantagens:
- Não recomendado para integração não-Java (ex: software legado)
- Requer suporte a integração message-based
JAVA EE CONNECTOR ARCHITECTURE (JCA)
Benefícios:
- Expoem os resources de uma forma genérica/alto-nível (via API)
JAVA EE CONNECTOR ARCHITECTURE (JCA)
Desvantagens:
- Requer uma implementação de um resource vendor’s connector
- Aumenta o acoplamento entre a aplicação e o sistema legado
JAVA API FOR XML-BASED WEB SERVICES
(JAX-WS)
Benefícios:
- Endereça os requisitos de enterprise QoS para segurança
 WS-Security
 Reliability
- Suporte para as camadas de transporte HTTP/HTTPS e SMTP
JAVA API FOR XML-BASED WEB SERVICES
(JAX-WS)
Desvantagens:
- Somente XML (alguns workarounds disponíveis, mas nada oficial)
- Overhead do envelope SOAP/wrapper (caro para transportar)
- Sem suporte direto em Java EE para comunicação assíncrona
JAVA API FOR RESTFUL WEB SERVICES
(JAX-RS)
Benefícios:
- Não é necessário configurações quando usado container Java EE 6+
- Usa anotações (no lugar dos tradicionais XMLs)
- Métodos HTTP (POST, GET, PUT, DELETE) podem simplesmente
representar um CRUD na aplicação
- Suporta JSON para mensagens
JAVA API FOR RESTFUL WEB SERVICES
(JAX-RS)
Desvantagens:
- Suporte somente para transporte via HTTP/HTTPS
- Não suporta WS-Security automaticamente
- Sem suporte direto em Java EE para comunicação assíncrona
REMOTE METHOD INVOCATION
(JAVA/RMI)
Benefícios:
- Orientado a objetos. RMI pode passar objetos completos como
argumentos e retornar valores
- Objetos são passados por valor. O cliente ou servidor pode
reconstituir os objetos facilmente
- O tipo de dado pode ser qualquer objeto Java (Serializable)
REMOTE METHOD INVOCATION
(JAVA/RMI)
Desvantagens:
- Deve-se usar Java em objetos locais e remotos
- Argumentos devem implementar Serializable ou herdar Remote
 java.io.* e java.rmi.*
O QUE VEREMOS AGORA?
Antes de partimos para um hands-on com JMS e processamento
assíncrono, veremos mais alguns detalhes sobre JMS
[JMS] MESSAGES
- Uma mensagem é uma unnidade de dados que é enviada por um
processo para a mesma ou diferente máquina
- Uma mensagem pode ser um texto básico (String) ou uma estrutura
mais complexa (HashMap, por exemplo)
- A restrição é que as mensagens devem ser Serializable
[JMS] MESSAGE-ORIENTED MIDDLEWARE
- Message-Oriented Middleware (MOM) é uma lista de serviços
server-based usados para suportar envio e recebimento de msgs
- É a infraestrutura do MOM que provê mecanismos para a aplicação
criar, enviar e receber mensagens
- ActiveMQ é um MOM
[JMS] COMMUNICATION MODES
Synchronous:
- O requisitor tem o processo bloqueado até que a resposta (ou
timeout) é recebida
- Como o volume de tráfico aumenta, mais bandwidth é requerida, e
a necessidade de mais hardware se torna crítica
- Quando a capacidade de processamento é excedida, a oportunidade
de processar uma informação é tipicamente perdida
[JMS] COMMUNICATION MODES
Asynchronous:
- As partes estão no mesmo nível e podem enviar e receber
mensagens a vontade
- Comunicação assíncrona não requer reconhecimento de mensagens
em tempo real; o requisitor pode continuar com outro processamento
uma vez que ele já enviou a mensagem
[JMS] MESSAGE-DRIVEN BEAN
- Um message-driven bean (MDB) é um componente stateless que é
invocado pelo container EJB (ou um agente do Spring) quando uma
mensagem JMS entra em um destino (queue ou topic) em que o bean
foi registrado
- Um MDB é um message consumer (consumidor)
- Um MDB deve implementar a interface javax.jms.MessageListener
- O processamento assíncrono é feito através de MDBs
- O método onMessage( ) de um bean é invocado quando o mesmo é
invocado pelo container (ou Spring) para processar a mensagem
#PARTIU #HANDS-ON #JMS #ASYNC
Todos os códigos estão disponíveis no GitHub:
- JMS Assíncrono usando recursos de um Java EE server:
 https://github.com/atilla8huno/jms-async-javaee
- JMS Assíncrono usando Spring em um container server:
 https://github.com/atilla8huno/jms-async-spring
- JMS Assíncrono usando Spring em um ambiente desktop (Java SE):
 https://github.com/atilla8huno/jms-async-spring-javase

Mais conteúdo relacionado

Mais procurados

O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?
Bruno Borges
 
Cliente e servidor
Cliente e servidorCliente e servidor
Cliente e servidor
Davi Silva
 
Introdução à Arquitetura Web
Introdução à Arquitetura WebIntrodução à Arquitetura Web
Introdução à Arquitetura Web
Breno Vitorino
 
Comparação entre p2 p e cs
Comparação entre p2 p e csComparação entre p2 p e cs
Comparação entre p2 p e cs
Ana Paula Gama
 

Mais procurados (18)

Arquitetura Cliente-Servidor
Arquitetura Cliente-ServidorArquitetura Cliente-Servidor
Arquitetura Cliente-Servidor
 
Fundamentos da arquitetura cliente servidor.
Fundamentos da arquitetura cliente servidor.Fundamentos da arquitetura cliente servidor.
Fundamentos da arquitetura cliente servidor.
 
03 arquitetura-cliente-servidor
03   arquitetura-cliente-servidor03   arquitetura-cliente-servidor
03 arquitetura-cliente-servidor
 
Aula01 arquitetura clienteservidor
Aula01 arquitetura clienteservidorAula01 arquitetura clienteservidor
Aula01 arquitetura clienteservidor
 
Java Messaging Service
Java Messaging ServiceJava Messaging Service
Java Messaging Service
 
O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?
 
Mda arq cliente_serv
Mda arq cliente_servMda arq cliente_serv
Mda arq cliente_serv
 
Arquitetura de software : Cliente-Servidor
Arquitetura de software : Cliente-ServidorArquitetura de software : Cliente-Servidor
Arquitetura de software : Cliente-Servidor
 
Cliente e servidor
Cliente e servidorCliente e servidor
Cliente e servidor
 
Sistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebSistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na Web
 
Arquitetura Cliente-Servidor - Modelos
Arquitetura Cliente-Servidor - ModelosArquitetura Cliente-Servidor - Modelos
Arquitetura Cliente-Servidor - Modelos
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 
Introdução à Arquitetura Web
Introdução à Arquitetura WebIntrodução à Arquitetura Web
Introdução à Arquitetura Web
 
Comparação entre p2 p e cs
Comparação entre p2 p e csComparação entre p2 p e cs
Comparação entre p2 p e cs
 
Maratona JBoss 2010 - JBossWS
Maratona JBoss 2010 -  JBossWSMaratona JBoss 2010 -  JBossWS
Maratona JBoss 2010 - JBossWS
 
Servidores de aplicação apresentação
Servidores de aplicação apresentaçãoServidores de aplicação apresentação
Servidores de aplicação apresentação
 
15 padrões de mensageria para integração de sistemas
15 padrões de mensageria para integração de sistemas15 padrões de mensageria para integração de sistemas
15 padrões de mensageria para integração de sistemas
 
Servidor web
Servidor webServidor web
Servidor web
 

Destaque (7)

HornetQ - 2.1.HornetQ no Modo Standalone
HornetQ - 2.1.HornetQ no Modo StandaloneHornetQ - 2.1.HornetQ no Modo Standalone
HornetQ - 2.1.HornetQ no Modo Standalone
 
HornetQ - 2.Arquitetura do HornetQ
HornetQ - 2.Arquitetura do HornetQHornetQ - 2.Arquitetura do HornetQ
HornetQ - 2.Arquitetura do HornetQ
 
HornetQ - 10.Reentrega de Mensagens e DLQ
HornetQ - 10.Reentrega de Mensagens e DLQHornetQ - 10.Reentrega de Mensagens e DLQ
HornetQ - 10.Reentrega de Mensagens e DLQ
 
HornetQ - 12.Paginação
HornetQ - 12.PaginaçãoHornetQ - 12.Paginação
HornetQ - 12.Paginação
 
HornetQ - 11.Mensagens Expiradas
HornetQ - 11.Mensagens ExpiradasHornetQ - 11.Mensagens Expiradas
HornetQ - 11.Mensagens Expiradas
 
HornetQ - 4.Persistência
HornetQ - 4.PersistênciaHornetQ - 4.Persistência
HornetQ - 4.Persistência
 
Novas APIs do Java EE 7: JMS e Web Services
Novas APIs do Java EE 7: JMS e Web ServicesNovas APIs do Java EE 7: JMS e Web Services
Novas APIs do Java EE 7: JMS e Web Services
 

Semelhante a Integração de Sistemas e JMS Assíncrono

Técnicas de Programação para a Web
Técnicas de Programação para a WebTécnicas de Programação para a Web
Técnicas de Programação para a Web
Luiz Cláudio Silva
 
Redes Avançadas - 6.QoS
Redes Avançadas - 6.QoSRedes Avançadas - 6.QoS
Redes Avançadas - 6.QoS
Mauro Tapajós
 
Psdc - 2014/01
Psdc - 2014/01Psdc - 2014/01
Psdc - 2014/01
Isa Prati
 
Desenho de uma rede
Desenho de uma redeDesenho de uma rede
Desenho de uma rede
MaxFiberson
 

Semelhante a Integração de Sistemas e JMS Assíncrono (20)

Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
 
Técnicas de Programação para a Web
Técnicas de Programação para a WebTécnicas de Programação para a Web
Técnicas de Programação para a Web
 
Redes Avançadas - 6.QoS
Redes Avançadas - 6.QoSRedes Avançadas - 6.QoS
Redes Avançadas - 6.QoS
 
Desconstruindo EJB
Desconstruindo EJBDesconstruindo EJB
Desconstruindo EJB
 
Psdc - 2014/01
Psdc - 2014/01Psdc - 2014/01
Psdc - 2014/01
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações Mashup
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 
Rest workshop
Rest workshopRest workshop
Rest workshop
 
Introdução ao Google AppEngine
Introdução ao Google AppEngineIntrodução ao Google AppEngine
Introdução ao Google AppEngine
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application Server
 
Boas práticas com Web Services
Boas práticas com Web ServicesBoas práticas com Web Services
Boas práticas com Web Services
 
Arquitetura Web no AWS
Arquitetura Web no AWSArquitetura Web no AWS
Arquitetura Web no AWS
 
Modelo osi e seus serviços
Modelo osi e seus serviçosModelo osi e seus serviços
Modelo osi e seus serviços
 
Arquitetura Funcional em Microservices
Arquitetura Funcional em MicroservicesArquitetura Funcional em Microservices
Arquitetura Funcional em Microservices
 
APIs REST com Spring Boot
APIs REST com Spring BootAPIs REST com Spring Boot
APIs REST com Spring Boot
 
JME Web Services API: um estudo de caso
JME Web Services API: um estudo de casoJME Web Services API: um estudo de caso
JME Web Services API: um estudo de caso
 
Desenho de uma rede
Desenho de uma redeDesenho de uma rede
Desenho de uma rede
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Rest introdução
Rest introduçãoRest introdução
Rest introdução
 
JavaEE
JavaEEJavaEE
JavaEE
 

Integração de Sistemas e JMS Assíncrono

  • 1. INTEGRAÇÃO DE SISTEMAS Uma visão geral sobre as tecnologias disponíveis em Java para várias formas de integração de sistemas
  • 2. O QUE VEREMOS POR AQUI O que é, benefícios e desvantagens para: - Java Message Service (JMS) - Java EE Connector Architecture (JCA) - Java API for XML-based Web Services (JAX-WS) - Java API for RESTful Web Services (JAX-RS) - Remote Method Invocation (Java/RMI)
  • 3. JAVA MESSAGE SERVICE (JMS) Benefícios: - Fácil integração de sistemas incompatíveis - Mensagens síncronas:  Suporta reconhecimento de mensagens (entrega garantida)  Suporte para transações (via JTA) - Mensagens assíncronas:  Como o volume de transações aumenta, asynchronous messaging is better  Mensagem assíncrona é menos afetada por falhas em hardware, software e network  Quando a capacidade de processamento é excedida, informações não são perdidas
  • 4. JAVA MESSAGE SERVICE (JMS) Desvantagens: - Não recomendado para integração não-Java (ex: software legado) - Requer suporte a integração message-based
  • 5. JAVA EE CONNECTOR ARCHITECTURE (JCA) Benefícios: - Expoem os resources de uma forma genérica/alto-nível (via API)
  • 6. JAVA EE CONNECTOR ARCHITECTURE (JCA) Desvantagens: - Requer uma implementação de um resource vendor’s connector - Aumenta o acoplamento entre a aplicação e o sistema legado
  • 7. JAVA API FOR XML-BASED WEB SERVICES (JAX-WS) Benefícios: - Endereça os requisitos de enterprise QoS para segurança  WS-Security  Reliability - Suporte para as camadas de transporte HTTP/HTTPS e SMTP
  • 8. JAVA API FOR XML-BASED WEB SERVICES (JAX-WS) Desvantagens: - Somente XML (alguns workarounds disponíveis, mas nada oficial) - Overhead do envelope SOAP/wrapper (caro para transportar) - Sem suporte direto em Java EE para comunicação assíncrona
  • 9. JAVA API FOR RESTFUL WEB SERVICES (JAX-RS) Benefícios: - Não é necessário configurações quando usado container Java EE 6+ - Usa anotações (no lugar dos tradicionais XMLs) - Métodos HTTP (POST, GET, PUT, DELETE) podem simplesmente representar um CRUD na aplicação - Suporta JSON para mensagens
  • 10. JAVA API FOR RESTFUL WEB SERVICES (JAX-RS) Desvantagens: - Suporte somente para transporte via HTTP/HTTPS - Não suporta WS-Security automaticamente - Sem suporte direto em Java EE para comunicação assíncrona
  • 11. REMOTE METHOD INVOCATION (JAVA/RMI) Benefícios: - Orientado a objetos. RMI pode passar objetos completos como argumentos e retornar valores - Objetos são passados por valor. O cliente ou servidor pode reconstituir os objetos facilmente - O tipo de dado pode ser qualquer objeto Java (Serializable)
  • 12. REMOTE METHOD INVOCATION (JAVA/RMI) Desvantagens: - Deve-se usar Java em objetos locais e remotos - Argumentos devem implementar Serializable ou herdar Remote  java.io.* e java.rmi.*
  • 13. O QUE VEREMOS AGORA? Antes de partimos para um hands-on com JMS e processamento assíncrono, veremos mais alguns detalhes sobre JMS
  • 14. [JMS] MESSAGES - Uma mensagem é uma unnidade de dados que é enviada por um processo para a mesma ou diferente máquina - Uma mensagem pode ser um texto básico (String) ou uma estrutura mais complexa (HashMap, por exemplo) - A restrição é que as mensagens devem ser Serializable
  • 15. [JMS] MESSAGE-ORIENTED MIDDLEWARE - Message-Oriented Middleware (MOM) é uma lista de serviços server-based usados para suportar envio e recebimento de msgs - É a infraestrutura do MOM que provê mecanismos para a aplicação criar, enviar e receber mensagens - ActiveMQ é um MOM
  • 16. [JMS] COMMUNICATION MODES Synchronous: - O requisitor tem o processo bloqueado até que a resposta (ou timeout) é recebida - Como o volume de tráfico aumenta, mais bandwidth é requerida, e a necessidade de mais hardware se torna crítica - Quando a capacidade de processamento é excedida, a oportunidade de processar uma informação é tipicamente perdida
  • 17. [JMS] COMMUNICATION MODES Asynchronous: - As partes estão no mesmo nível e podem enviar e receber mensagens a vontade - Comunicação assíncrona não requer reconhecimento de mensagens em tempo real; o requisitor pode continuar com outro processamento uma vez que ele já enviou a mensagem
  • 18. [JMS] MESSAGE-DRIVEN BEAN - Um message-driven bean (MDB) é um componente stateless que é invocado pelo container EJB (ou um agente do Spring) quando uma mensagem JMS entra em um destino (queue ou topic) em que o bean foi registrado - Um MDB é um message consumer (consumidor) - Um MDB deve implementar a interface javax.jms.MessageListener - O processamento assíncrono é feito através de MDBs - O método onMessage( ) de um bean é invocado quando o mesmo é invocado pelo container (ou Spring) para processar a mensagem
  • 19.
  • 20.
  • 21. #PARTIU #HANDS-ON #JMS #ASYNC Todos os códigos estão disponíveis no GitHub: - JMS Assíncrono usando recursos de um Java EE server:  https://github.com/atilla8huno/jms-async-javaee - JMS Assíncrono usando Spring em um container server:  https://github.com/atilla8huno/jms-async-spring - JMS Assíncrono usando Spring em um ambiente desktop (Java SE):  https://github.com/atilla8huno/jms-async-spring-javase

Notas do Editor

  1. JMS provê uma Interface Java padronizada para produtos message-oriented middleware (MOM)
  2. JCA provê um mecanismo de acesso padronizado para enterprise information system (EIS) da plataforma Java EE JCA é uma arquitetura genérica para conectar sistemas legados (wraps legados que provê valor para um negócio expondo suas funcionalidades via API)
  3. JAX-WS é a tecnologia usada para construir Web Services e clientes que se comunicam usando XML Para isto, a invocação de uma operação Web Service é representada por um protocolo XML-based (ex: SOAP) QoS são requisitos não-funcionais (performance, escalabilidade, confiança, etc
  4. Metro – Implementação de JAX-WS do glassfish que invlui várias extensibilidades e easy-to-use features
  5. JAX-RS provê suporte a Web Services que atende o padrão arquitetural Representational State Transfer (REST) JAX-RS faz o uso extensido de anotações para simplificar o desenvolvimento de WS clientes e endpoints
  6. Java/JMI é uma tecnologia Java em que os métodos de objetos remotos podem ser invocados de outras JVMs (via protocolo JRMP) e usa serialização.
  7. Um exemplo de processamento sincrono é autorização de cartão de crédito/débito (reader and card)
  8. Um exemplo de processamento assíncrono é a comunicação via e-mail (vc recebe e-mails de várias pessoas mesmo estando offline)
  9. Um MDB não é instanciado diretamente. A interação com esses beans são feitas enviando mensagens para a fila ou tópico que o bean foi registrado. O processamento de um bean pode participar de transações no servidor
  10. Exemplo de JMS assíncrono