Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

  #Este é um post fechado

Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!



Introdução à JMS com Java EE 6 - Java Magazine 80

Uma “introdução moderna” à JMS (inclusive MDB), escrita principalmente para o leitor que ainda não se aventurou com a API de mensageria da plataforma Java EE. Mostramos como programar a JMS com a versão mais recente do Java EE, o que deve tornar o artigo interessante também como atualização para quem já o fez em versões anteriores da plataforma.






BRK##: 21 - 20

Introdução à JMS com Java EE 6

Aprenda a usar a JMS, ou atualize-se com as facilidades do Java EE 6

A Java Message API não sofreu alterações no Java EE 6, mas também se beneficia de melhorias da nova plataforma como CDI. Nunca foi tão fácil criar sistemas com mensageria assíncrona em Java

De que se trata o artigo:

Uma “introdução moderna” à JMS (inclusive MDB), escrita principalmente para o leitor que ainda não se aventurou com a API de mensageria da plataforma Java EE. Mostramos como programar a JMS com a versão mais recente do Java EE, o que deve tornar o artigo interessante também como atualização para quem já o fez em versões anteriores da plataforma.

Para que serve:

A JMS (Java Message Service) permite a comunicação assíncrona entre aplicações, utilizando dois modelos básicos de conectividade:

1)   Filas ponto-a-ponto (queues), onde mensagens submetidas por uma aplicação “produtora” são entregues a uma única aplicação “consumidora”. Pode haver vários consumidores conectados à mesma fila, neste caso somente um deles receberá cada mensagem;

2)   Canais publish/subscribe (topics), onde cada mensagem pode ser recebida simultaneamente por ersas aplicações consumidoras.

Em que situação o tema é útil:

Para o leitor que está dando seus primeiros passos com mensageria assíncrona / JMS, ou interessado em novidades da plataforma Java EE 6 (por exemplo, Contexts and Dependency Injection). Para quem ainda não se interessou por mensageria JMS, procuramos apresentar uma motivação. Finalmente, abordamos também as últimas atualizações sobre o status das tecnologias da Sun após a aquisição pela Oracle.

 

Em comparação com middlewares síncronos (como EJB), a JMS proporciona baixo acoplamento entre produtores e consumidores, pois estes não precisam estar diretamente conectados, nem precisam estar executando ao mesmo tempo – mensagens podem ser armazenadas nas filas/topics por algum tempo (indefinido ou limitado) enquanto não são lidas por alguém. A comunicação assíncrona tem vantagens bem conhecidas; facilita criar aplicações com características como:

·      Alta concorrência: a comunicação síncrona A®B implica que a aplicação A não precisa ficar parada enquanto B recebe uma mensagem e executa algum processamento; portanto, há maior potencial de paralelismo, especialmente no lado do produtor;

·      Tolerância a falhas: se a aplicação B ficar temporariamente indisponível ou talvez sobrecarregada, isso não impede A de funcionar, nem mesmo deixa A com alguns recursos importantes (como um thread, conexão com database etc.) bloqueados inutilmente enquanto aguarda B – o que tende a reduzir a carga e o risco de falhas também no servidor de A;

·      Escalabilidade e balanceamento: transações complexas que envolvem vários sistemas são naturalmente ididas em fatias pequenas e independentes, permitindo à infraestrutura (containers Java EE, JMS, monitor de transações, software de clustering) conseguir melhor paralelismo e ocupação eficiente de recursos.

 

Existem ainda outras características interessantes, como facilidade de monitoração (é fácil capturar e analisar as mensagens trocadas entre as aplicações), e interoperabilidade com web services (mensagens XML podem ser encapsuladas em mensagens JMS). Na comparação com os web services, a mensageria JMS tem maior desempenho (permite trafegar dados binários entre outras vantagens) e permite implementar transações distribuídas (operações de envio e recepção de mensagens podem participar de uma transação XA, sendo passíveis de rollback).

Este artigo tem uma abordagem totalmente prática; para mais detalhes sobre a API e mensageria, bem como uma abordagem alternativa de programação, veja o artigo online de Fábio Augusto Falavinha na Edição 76: “JMS na prática com Spring e ActiveMQ”.

 

Transação XA: Transação distribuída, recurso suportado pela JTA (Java Transaction API). Permite que múltiplos recursos transactionais – como um SGBD e um servidor JMS – ou mesmo várias aplicações em processos separados participem de uma mesma transação, com garantia das propriedades ACID. Por exemplo, se uma transação gravar um registro no banco de dados e enviar uma mensagem JMS, há garantia que ou ambas operações serão realizadas (em caso de



ATENÇÃO! A exibição deste artigo foi interrompida.


  #Este é um post fechado

Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!







    13 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Bruno Mendes
Está impossível de ler coisas no vídeo. Fullscreen pior ainda...


em 24/7/2010 19:36 - Responder

 

  Devmedia - Equipe De Moderação
Bruno,
não conseguimos verificar o problema. por favor, verifique suas configurações de video.


em 30/7/2010 20:26 - Responder
 

Cassio Cunha Noronha
To encontrando o seguinte erro depois que coloquei o filtro para recepção de mensagem.

INFO: endpoint.determine.destinationtype
GRAVE: createConsumer on JMSService:jmsdirect failed for connectionId:5931288506789607936 and sessionId:5931288506789608448 due to invalid selector=symbol = ^BVSP AND volume >= 50
AVISO: Exception during endpoint activation for ra [ jmsra ], activationSpecClass [ com.sun.messaging.jms.ra.ActivationSpec ] : javax.resource.NotSupportedException: MQRA:EC:Error creating Direct Message Consumer:
createConsumer on JMSService:jmsdirect failed for connectionId:5931288506789607936 and sessionId:5931288506789608448 due to invalid selector=symbol = ^BVSP AND volume >= 50
GRAVE: MDB00017: [QuotesConsumerBean]: Exception in creating message-driven bean container: [java.lang.Exception]
GRAVE: java.lang.Exception
java.lang.Exception
        at com.sun.enterprise.connectors.inbound.ConnectorMessageBeanClient.setup(ConnectorMessageBeanClient.java:229)
...
...
...
Caused by: javax.resource.NotSupportedException: MQRA:EC:Error creating Direct Message Consumer:
createConsumer on JMSService:jmsdirect failed for connectionId:5931288506789607936 and sessionId:5931288506789608448 due to invalid selector=symbol = ^BVSP AND volume >= 50

Tem alguma sugestão do que pode estar acontecendo?

Obrigado.


em 4/10/2010 16:39 - Responder

 

  Cassio Cunha Noronha
resolvi.. faltava colocar aspas simples logo após symbol, ficando deste jeito

propertyValue = "symbol = ''^BVSP'' AND volume >= 50"


em 4/10/2010 16:45 - Responder
 

Cassio Cunha Noronha
Se eu criar uma fila em um outro servidor, diferente de onde está meu servidor de aplicação, como faço pra configurar o ip dessa fila pra onde desejo enviar/receber mensagens?Obrigado


em 4/10/2010 11:27 - Responder

 

  Luiz Daniel Soares
Ola Cassio, voce precisa configurar o jndi da fila que voce criou nesse servidor, no servidor da sua aplicação, para acessar as filas/topicos nas aplicações que irao enviar/receber as mensagens. 


em 4/10/2010 11:39 - Responder
 

  Cassio Cunha Noronha
Gostaria de saber como fazer se a minha fila JMS estiver em um outro servidor, não entendi a resposta acima.
O que eu preciso configurar e onde?

Agradeço muito a quem puder me ajudar.

Obrigado.


em 5/10/2010 01:13 - Responder
 

Ythalo Rossy Saldanha Lira
Olá Luiz,

Ao adicionar a propriedade messageSelector, com o intuito de filtrar a mensagem, o MDB parou de consumir as mensagem da fila. Segui o conselho do colega Cassio e adicionei as aspas simples, mas mesmo assim não funcionou

@MessageDriven(mappedName = "jms/Quotes",
activationConfig = {
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
    @ActivationConfigProperty(propertyName = "messageSelector", propertyValue = "symbol=''^BVSP'' AND volume>=50")
})

Atenciosamente.


em 22/10/2010 23:25 - Responder

 

  Dyego Souza Do Carmo
Poderia saber qual o servidor de aplicacoes que voce está utilizado ?


em 28/10/2010 14:17 - Responder
 

  Ythalo Rossy Saldanha Lira
Olá Dyego,

Estou utilizando o Oracle Glassfish 3, a versão que vem na instalação do Netbeans 6.9.1.

Ao utilizar o código abaixo para filtrar apenas as mensagem com volume maior ou igual a 50, o Consumer retirou varias mensagens com volume menor que 50.

@MessageDriven(mappedName = "jms/Quotes",
activationConfig = {
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
    @ActivationConfigProperty(propertyName = "messageSelector", propertyValue = "volume >= 50")
})


No mais, o artigo foi muito esclarecedor e objetivo, consegui atigir um bom conhecimento prático sobre JMS.

Obrigado.


em 28/10/2010 22:33 - Responder
 

  Dyego Souza Do Carmo
O Glassfish V3 está com um bug bem complicado no JMS e versão 3.0.1,

Por favor atualize para a a 3.1 beta e teste...



em 3/11/2010 11:31 - Responder
 

Luiz Carlos Freitas Flores Junior
ola so iniciante em java estou como uma duvida:
uma vez instalado o NetBeans com suporte a Java EE e Glassfish, está tudo configurado. Só precisamos criar os recursos de JMS que serão usados pela aplicação.
Comece entrando no console de administração do Glassfish, que por default fica em localhost:4848.

bom imagino q é só isntalar o netbeans com glassfish e depois entra no browser e difitar uma vez instalado o NetBeans com suporte a Java EE e Glassfish, está tudo configurado. Só precisamos criar os recursos de JMS que serão usados pela aplicação.
Comece entrando no console de administração do Glassfish, que por default fica em localhost:4848 e deu teria q abrir o glassfish????

Ou tem q fazer alguma coisa tipo abilitar o serviço do glassfish pra q ele fique funcionando???? ou ainda se uso o windws seven tem q instalar o netbeans como administrador ??? ou o q tenho q fazer pra funcionar aqui??? bahh estava lendo a revista bem faceiro e tranquei nesta parte e agora??? se alguem puder ajudar agradeço procurei no google + parece q nenguem fala nisso pq todo munco conhece q é só abrir o navegador e deu rsrsrs achei estranho q só eu no mundo nao faço nem idéia de como é o glassfish kkk t++ galera e de um help ai rsrsr


em 8/9/2011 22:32 - Responder

 

  Dyego Souza Do Carmo
Adicione um novo recurso do JMS em sua app (ex: Message Driven Bean) e você vai ver que tudo vai ser automagicamente configurado quando voce rodar sua aplicação pela primeira vez.


Valeu :)


em 14/9/2011 09:05 - Responder
 



[Este post ainda não foi associado a uma sequência]
Autor
Osvaldo Pinali Doederlein

é Mestre em Engenharia de Software Orientado a Objetos e Arquiteto de Tecnologia da Visionnaire Informática, trabalhando em projetos de software e prospecção tecnológica.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 4,90 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ 1,96 (assinante) ou R$ 2,45 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ 1,47
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03