Escolar Documentos
Profissional Documentos
Cultura Documentos
Plataforma Corporativa
Tutorial
MDB e JMS
Agosto 2016
Sumário
1.Introdução ...................................................................................................................................................................... 3
2. Estrutura da Aplicação .................................................................................................................................................. 4
3.Configuração de uma fila no provedor JMS do JBoss WildFly ....................................................................................... 5
4. Criar um cliente JMS ..................................................................................................................................................... 8
ClienteJMS.java ....................................................................................................................................................... 11
5. Criação de um projeto para um módulo EJB .............................................................................................................. 14
5.1. Implementação do componente corporativo MDB ............................................................................................. 15
ProcessadorDeEventos.java .................................................................................................................................... 17
6. Aplicação Corporativa ................................................................................................................................................. 19
6.1. Configuração dos módulos corporativos da aplicação corporativa. .................................................................... 20
7. Cliente JMS na aplicação WEB .................................................................................................................................... 22
MDBServlet.java ...................................................................................................................................................... 26
1.Introdução
Neste documento os procedimentos para implantação de um componente corporativo nodo tipo MDB no JBoss
Wildfly e realizar sua chamada a partir de um servlet e de um cliente remoto utilizando a API JMS.
2. Estrutura da Aplicação
Vai ser necessário configurar no servidor de aplicações o servidor de mensagens, implantando nele uma fila.
Inicialmente, no servidor de aplicações iremos implantar uma aplicação Java EE, sem a camada de aplicação,
somente os componentes corporativos (Módulo EE).
Iremos executar uma aplicação cliente para disparar a execução do bean de mensagem remotamente.
Em seguida, iremos implementar um servlet que também envia uma mensagem para a fila de mensagens
associada ao bean de mensagem.
3.Configuração de uma fila no provedor JMS do JBoss WildFly
Vamos implantar uma Fila (Queue) chamada eventQueue e seu bind JNDI java:/jms/queue/eventQueue.
Execute o seu servidor de aplicação (standalone.bat) através do promp de comando, com o comando abaixo
para que o subsistema de mensageria (HornetQ) seja executado:
standalone.bat –b 0.0.0.0 –c standalone-full.xml
Inicie o CLI:
o Abra uma nova janela de prompt de comando e execute o comando:
jboss-cli.bat --connect.
Execute o Netbeans.
Na barra de comando selecione “Arquivo” -> Novo projeto.
Execute a sua classe cliente. Não se esqueça de incluir no seu projeto a biblioteca do WildFly que provê o
serviço de nomes para o JNDI.
ClienteJMS.java
package jms.cliente;
import java.util.logging.Logger;
import java.util.Properties;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
try {
// configura JNDI
env.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY);
env.put(Context.PROVIDER_URL, System.getProperty(Context.PROVIDER_URL,
PROVIDER_URL));
env.put(Context.SECURITY_CREDENTIALS, System.getProperty("password",
PASSWORD));
// lookup JNDI
producer = session.createProducer(destination);
// consumer = session.createConsumer(destination);
conn.start();
int count = Integer.parseInt(System.getProperty("message.count",
MESSAGE_COUNT));
// Envia mensagem
message = session.createTextMessage(content);
producer.send(message);
} catch (Exception e) {
log.severe(e.getMessage());
throw e;
} finally {
if (context != null) {
context.close();
// Fecha conexao.
if (conn != null) {
conn.close();
}
5. Criação de um projeto para um módulo EJB
Execute o Netbeans.
Na barra de comando selecione “Arquivo” -> Novo projeto.
Em categoria selecione “Java EE” e em Projetos, selecione “Módulo EJB”. Clique em próximo.
De um nome para seu módulo e indique onde você deseja manter o projeto. Clique em próximo.
Na aba projetos, clique com o botão da direita sobre o projeto de seu módulo EJB e selecione “Novo” ->
Bean Baseado em Mensagens....
package ejb.beans;
import java.util.logging.Logger;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public ProcessadorDeEventos() {
@Override
try {
} else {
} catch (JMSException e) {
}
6. Aplicação Corporativa
Para realizar a implantação completa do módulo EJB é necessário criar uma aplicação corporativa.
Execute o netbeans.
Na barra de comando selecione “Arquivo” -> Novo projeto.
Em categoria selecione “Java EE” e em Projetos, selecione “Aplicação Enterprise”. Clique em próximo.
De um nome e escolha o diretório onde você deseja manter os fontes da aplicação e clique em próximo.
Como já possuímos um módulo web (aplicação desenvolvida até o momento) e já criamos o módulo EJB, não
devemos criar os módulos WEB e EJB. Clicar em Finalizar.
Devemos configurar os módulos de uma aplicação corporativa, neste caso, o módulo EJB que contém a
implementação dos componentes que serão executados no EJB Container.
Clicar com o botão da direita sobre o projeto java corporativo na aba Projetos e selecionar “Adicionar
Módulo Java EE”.
Selecione o módulo EJB e clique em OK.
Execute o Netbeans.
Na barra de comando selecione “Arquivo” -> Novo projeto.
Em categoria selecione “Java Web” e em Projetos, selecione “Aplicação Web”. Clique em próximo.
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
producer = session.createProducer(destination);
conn.start();
producer.send(message);
} catch (Exception e) {
e.printStackTrace();
response.setContentType("text/html;charset=UTF-8");
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet MDBServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("</body>");
out.println("</html>");
} catch (Exception e) {
e.printStackTrace();
}
@Override
processRequest(request, response);
@Override
processRequest(request, response);
@Override
}// </editor-fold>