A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Java EE Message Driven Beans

Apresentações semelhantes


Apresentação em tema: "Java EE Message Driven Beans"— Transcrição da apresentação:

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

2 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

3 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

4 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

5 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

6 O que é? Message-Driven Bean

7 O que é? Message-Driven Bean

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

9 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

10 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

11 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

12 O JMS Message-Driven Bean

13 O JMS Message-Driven Bean

14 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

15 Comparação com outros Beans
MDB JMS JavaMail Asynchrony (receive) x Asynchrony (send) Concurrency EJB Transactional Support 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

16 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

17 Como funciona um MDB O código de uma classe MDB requer o seguinte para codificação: deve ser “anotada” 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

18 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

19 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

20 Como funciona um MDB Message-Driven Bean

21 Como funciona um MDB Message-Driven Bean

22 Como funciona um MDB Message-Driven Bean

23 Criando um MDB... Message-Driven Bean

24 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

25 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

26 Módulo EJB

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

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

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

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

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

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

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

34 Módulo Web

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

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

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

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

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

40 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

41 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

42 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


Carregar ppt "Java EE Message Driven Beans"

Apresentações semelhantes


Anúncios Google