Java EE Message Driven Beans

Slides:



Advertisements
Apresentações semelhantes
Desenvolvimento de Sistemas Distribuídos Web Services
Advertisements

Sistemas Distribuídos Baseados em Objetos
ARQUITETURA EM CAMADAS
UNIPAC – ARAGUARI CAMPUS – IX PROF. EVERTON HIPÓLITO DE FREITAS
PLATAFORMA J2EE Luís Filipe Almeida Santos
Sistemas Distribuídos
Objetos e Componentes Distribuídos na Web usando CORBA e EJB
Introdução aos Serviços Web
Prof. João Bosco M. Sobral
Web Services Erika Hmeljevski Estefania Borm Leonardo Malagoli
SOA e Web Services Aluno: Thiago Caproni Tavares
1 Arquitetura CORBA Repositório de Implementação Repositório de Interface cliente programa cliente proxy ORB Core ou invocação dinâmica servidor ORB Core.
Comunicação Entre Objetos Distribuídos
Mark C. Little Arjuna Technologies Ltd., Newcastle upon Tyne, UK
DAS Sistemas Distribuídos para Automação Industrial
Aplicações para Web.
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Java Persistence API (JPA) Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Arquitetura de Sistemas Eduardo Martins Guerra Desenvolvimento de Soluções WEB.
SOA - Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a serviços
Middleware e Sistemas Distribuídos
Aplicativos Web Com Orientação a Objetos
Sistemas e Tecnologias de Middleware TP3. Foco Sistema de comunicação – Sistema de Message Queuing – Abstracção do substracto de comunicação Adaptação.
Sistemas Distribuídos
Tópicos de Sistemas de Informação A
Web Services Uninorte Semana de Tecnologia da Informação
Marcela Bezerra da Silva Cin - UFPE
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 07.
Remote Method Invocation RMI
Concorrência e Java RMI
Tópicos Avançados em Sistemas Distribuídos
Rodrigo Cândido da Silva Instrutor VOffice / Globalcode
Servlets e JSP Desenvolvimento de Aplicações Web
JSP e Servlets ISEP – LP2 Filipe Costa – /2004.
RMI x C# Remote Emilena Specht – 1113/01/9 2004/01
SISTEMAS OPERACIONAIS I
Arquitetura das JSP - Aula 2
Aplicações Web com Orientação a Objetos
Da Introdução à Prática
Processos.
Conceitos da arquitetura
Introdução a JEE Marco A. S. Reis Arquiteto de Software Abril/2011.
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
RJC/MO Remote Java Connector Message Oriented Renato Jobson Carequinha.
Web Services Equipe: Cláudia Brito Lyra Nunes da Silva
.NET com C#.  Conceitos e Características  Vantagens do SOAP  Descrição do WebService  Gerenciamento de Estados  UDDI  Novidades do Framework 2.0.
A High Performance Java Middleware with a Real Application HUERT, Fabrice; CAROMEL, Denis; Bal, Henri E. Supercomputing 2004 Trabalho desenvolvido por:
Java – Remote Method Invocation (RMI)
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Transações J2EE UFRGS - Instituto de Informática Curso de Especialização Web e Sistemas de Informação (WEBSIS) Programação com Objetos Distribuídos Prof.
WSDL Web Services Description Language. Tecnologias Relacionadas Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI.
Multiparadigma das Comunicações em Java para Grid Computing Fernanda R. Ramos Luiz Felipe Marco Eiterer Profº Alcides Calsavara, Ph.D.
Programação com Objetos Distribuídos (Vânia R. Sávio Rodenas) 1 Transações com EJB 3.0 Vânia Regina Sávio Rodenas.
Implementando um sistema real com EJB Klissiomara Dias GENTe.
Sistema Almirante Gabriel Junji Ito Giuliano Diego Barbarra.
WebPTM Web Project and Time Manager Autor: Daniel Nicoletti Orientador: Prof. Dr. Carlos Miguel Tobar Toledo Co-Orientador: Murilo Woigt Miranda PONTIFÍCIA.
Sistemas Distribuídos
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Servidores.
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Aplicativos para Internet Prof. Wolley W. Silva
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
Aluno: Oscar Chamma Orientador: Armando Hage Curso de Especialização Engenharia de componentes com JAVA ENTERPRISE 1.
Desenvolvimento WEB II Ajax – Utilização de Frameworks Javascript Professora: Kelly de Paula Cunha.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.
Aspectos de Segurança Autenticação e Controle de Acesso Ricardo Cavalcanti Jobson Ronan
Aspectos de performance EJB Performance tuning Ricardo Cavalcanti Jobson Ronan
UNIFACS – Universidade Salvador Prof. Arquitetura Cliente/Servidor Parte V Middleware Eduardo Xavier.
Web Services / SOA. O cenário de TI nas corporações Novas tendências batiam à porta das corporações Migraram o foco do “gerenciamento de dados” para o.
Transcrição da apresentação:

Java EE Message Driven Beans Programação com Objetos Distribuídos (CMP167) Trabalho Final Eduardo Martins Machado

Message Driven Bean Introdução O que é? Quando usar? O JMS Comparação com outros Beans Como funciona um MDB Criando um MDB... Message-Driven Bean

Introdução A message-driven bean (MDB) é um bean que permite aplicativos JEE processar mensagens de forma assíncrona. Um MDB funciona “ouvindo” o Java Message Service (JMS), esperando por mensagens. As mensagens podem ser enviadas por qualquer tipo de componente JEE: aplicação cliente, outro bean, um componente Web, uma aplicação JMS ou até mesmo um sistema que não use a tecnologia JEE. MDB atualmente só processa mensagens do JMS. Message-Driven Bean

O que é? MDB não salva dados dos clientes (stateless), fica no servidor (server-side), é transaction-aware para processar mensagens do JMS de forma assíncrona. MDB é responsável por processar mensagens do JMS, enquanto o seu container cuida de forma transparente da gerência de seus componentes: transações, segurança, recursos, concorrência e reconhecimento de mensagens. Message-Driven Bean

O que é? A principal característica de um MDB é que ele é capaz de processar mensagens de forma concorrente (paralelamente). Isto proporciona uma enorme vantagem sobre clientes JMS tradicionais, que precisam ser construídos de forma a gerenciarem recursos, transações e segurança em um ambiente multithreaded. O container MDB do EJB gerencia concorrência de forma automática. Assim, pode-se receber várias mensagens do JMS de várias aplicações e processá-las concorrentemente (várias instâncias do MDB podem ser executadas ao mesmo tempo no container). O MDB é um EJB completo, assim como um session bean ou um entity bean; apesar de algumas diferenças. Enquanto um MDB tem uma classe e um descritor XML, este não tem interface de componentes (não usa RMI). Message-Driven Bean

O que é? Message-Driven Bean

O que é? Message-Driven Bean

O que é? @PostConstruct @PreDestroy Message-Driven Bean

Quando usar? Session beans e entity beans permitem o envio e recebimento de mensagens de forma síncrona(mas não assíncrona). Para evitar bloquear recursos do servidor, é mais eficiente não usar recebimento síncrono no lado do servidor. Para prover tal característica, deve-se usar um message-driven bean. Message-Driven Bean

O JMS O Java Message Service, é um sistema que proporciona comunicação entre sistemas através de mensagens. O uso de mensagem para comunicação é muito útil em sistemas distribuídos com acoplamento muito baixo entre os componentes, o que facilita a extensibilidade. Além disso, as mensagens são: Assíncrona: O JMS pode entregar a mensagem para um cliente assim que esta chega. Confiabilidade: A API JMS assegura que a mensagem é entregue uma e somente uma vez. Message-Driven Bean

O JMS Quando usar comunicação através de mensagens aos invés de outras tecnologias (como RMI)? Componentes independentes de informações de interfaces de outros componentes. Aplicação funcional mesmo que alguns componentes não estejam online. O modelo de negócio da aplicação permite que um componente envie dados a outro e não bloqueie na espera da resposta. Ou seja, não interreompe a lógica de negócio. Message-Driven Bean

O JMS Message-Driven Bean

O JMS Message-Driven Bean

Comparação com outros Beans Feature MDB SLSB SFSB BMP CMP State type Stateless Stateful N/A Instance pooling Yes No Transaction Transaction aware Transactional Local and remote interfaces Type of communication Aynchronous Synchronous Communication method JMS messages RMI-IIOP Business method onMessage() zero or more MDB Message Driven Bean SLSB Stateless Session Bean SFSB Stateful Session Bean BMP Bean-Managed Persistence CMP Container-Managed Persistence Message-Driven Bean

Comparação com outros Beans   MDB JMS JavaMail Asynchrony (receive) x Asynchrony (send) Concurrency EJB Transactional Support E-mail Support Guaranteed Delivery Non-JMS Client Access (RMI) x(1) Stateful Message Sender x(2) (1) com Session Bean (2) com Stateful Session Bean Comparação entre diferentes requisitos, e tipos de EJB que atendem a estes, de diferentes arquiteturas de sistemas de mensagens. A lista acima é apenas uma análise simplificada das arquiteturas. Message-Driven Bean

Como funciona um MDB Um desenvolvedor de um MBD deve implementar 3 itens essenciais: classe do message-driven bean mensagem compatível com o JMS um descritor de desenvolvimento. Message-Driven Bean

Como funciona um MDB O código de uma classe MDB requer o seguinte para codificação: deve ser “anotada” com @MessageDriven se não usar um descritor de desenvolvimento. tem que ser pública. não pode ser abstract ou final. tem que ter o construtor padrão (sem argumentos). não pode definir o método finalize. é recomendado que o MDB implemente a interface MDB para o tipo de mensagem que se quer escutar. Message-Driven Bean

Como funciona um MDB Deve-se escolher o modelo de troca de mensagens mais adequado para o sistema. Modelos de mensagens: leitores/escritores: tópico (topic) 1-* ponto-a-ponto: fila (queue) 1-1 Message-Driven Bean

Estrutura de dados compatível Como funciona um MDB Tipos de mensagens: Tipo de Mensagem Estrutura de dados compatível TextMessage java.lang.String ObjectMessage objeto Java serializável BytesMessage array de bytes StreamMessage stream de tipos primitivos Java (int, double, char, etc.) MapMessage Conjunto de pares name-value. Os valores tem que ser tipos primitivos Java ou seus encapsulamentos OO (wrappers), como Integer, Float, etc. Message-Driven Bean

Como funciona um MDB Message-Driven Bean

Como funciona um MDB Message-Driven Bean

Como funciona um MDB Message-Driven Bean

Criando um MDB... Message-Driven Bean

Criando um MDB... A aplicação exemplo usa um MDB para receber e processar mensagens para a fila, enviadas por um servlet. A aplicação usa um servlet para enviar mensagens para o MDB e para exibir uma listagem das mensagens enviadas. O exemplo é uma forma interessante de ver como se pode usar beans para integrar diferentes sistemas usando troca de mensagens, pois usa módulos EJB e web. Message-Driven Bean

Criando um MDB... Módulo EJB: Módulo Web: unidade de persistência (XML) classe do Entity Bean classe do MDB classe do Session Bean (Façade) Módulo Web: servlet de listagem servlet de postagem Message-Driven Bean

Módulo EJB

Criando um MDB... Persistence.xml Message-Driven Bean

Criando um MDB... NewsEntity.java: Message-Driven Bean

Criando um MDB... NewMessage.java: Message-Driven Bean

Criando um MDB... NewMessage.java: Message-Driven Bean

Criando um MDB... Padrão de Projeto Façade: Message-Driven Bean

Criando um MDB... NewsEntityFacadelocal.java: Message-Driven Bean

Criando um MDB... NewsEntityFacade.java: Message-Driven Bean

Módulo Web

Criando um MDB... web.xml: Message-Driven Bean

Criando um MDB... ListNews.java: Message-Driven Bean

Criando um MDB... PostMessage.java: Message-Driven Bean

Criando um MDB... PostMessage.java: Message-Driven Bean

Criando um MDB... PostMessage.java: Message-Driven Bean

Observações A especificação EJB 3.0 fez muitos avanços e realmente tornou o desenvolvimento de beans bem mais “agradável”, principalmente pelo foco em objetos Java simples (POJOs). A nova versão do Sun Java System Application Server PE 9.0 simplificou bastante a gerência do servidor. Documentação para aprendizado sobre o servidor de aplicação da Sun um pouco complexa. Apesar de já estar presente na especificação EJB desde a versão 2.0, pelos trabalhos e exemplos estudados, ainda parece uma tecnologia pouco divulgada, apesar de muito eficiente e extremamente flexível. Para a última especificação EJB (atualmente 3.0), existem muito poucos artigos sobre MDB explorando a forma mais simples de construção deste bean (usando Java annotations). Message-Driven Bean

Referências Netbeans.org Java Home da Sun Sun J2EE Tutorial Padrão de Projeto Façade O'Reilly OnJava - Message Driven Bean 2.0 Enterprise Java Bean - Capítulo13 - O'Reilly Online Catalog Tutorial sobre Message Driven Bean do Pramati JEE Server Message-Driven Bean

Referências WebLogic - Usando Message Driven Beans Oracle - How-To Develop a Message Driven Bean using EJB 3.0 BEA WebLogic Server 8.1 Documentation - Programming Enterprise JavaBeans Wiki Enterprise JavaBean DevX - EJB Messaging, Part II: Message-Driven Beans WebSphere Studio: Part 1 -- JMS and Message-Driven Beans Prentice Hall - Professional Technical Reference - Developing Message-Driven Beans Apresentação sobre MDB da UFRJ (somente no cache do Google) Message-Driven Bean