View
87
Download
3
Category
Preview:
Citation preview
INTEGRAÇÃO DE SISTEMAS
Uma visão geral sobre astecnologias disponíveis emJava para várias formas deintegraçã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 simplesmenterepresentar 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 comoargumentos e retornar valores
- Objetos são passados por valor. O cliente ou servidor podereconstituir 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 processamentoassíncrono, veremos mais alguns detalhes sobre JMS
[JMS] MESSAGES
- Uma mensagem é uma unnidade de dados que é enviada por umprocesso para a mesma ou diferente máquina
- Uma mensagem pode ser um texto básico (String) ou uma estruturamais 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çosserver-based usados para suportar envio e recebimento de msgs
- É a infraestrutura do MOM que provê mecanismos para a aplicaçãocriar, enviar e receber mensagens
- ActiveMQ é um MOM
[JMS] COMMUNICATION MODES
Synchronous:
- O requisitor tem o processo bloqueado até que a resposta (outimeout) é recebida
- Como o volume de tráfico aumenta, mais bandwidth é requerida, ea necessidade de mais hardware se torna crítica
- Quando a capacidade de processamento é excedida, a oportunidadede processar uma informação é tipicamente perdida
[JMS] COMMUNICATION MODES
Asynchronous:
- As partes estão no mesmo nível e podem enviar e recebermensagens a vontade
- Comunicação assíncrona não requer reconhecimento de mensagensem tempo real; o requisitor pode continuar com outro processamentouma 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 umamensagem JMS entra em um destino (queue ou topic) em que o beanfoi 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
Recommended