Java Message Service - 3 de 3
Autor: Pedro Cacique | Publicado: 2014-10-18T17:04:00-07:00


Aplicação WEB

Para fecharmos nossa aplicação, faremos uma interface web simples, que conterá apenas uma caixa de texto, um radio group que selecionará entre um processo síncrono e outro assíncrono e o botão de envio.





Nosso código HTML no body ficará assim:







&lt;form action="Controller" method="POST"&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;textarea name="mensagem"&gt;&lt;/textarea&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/p&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;&lt;input type="radio" name="type" value="sinc" checked/&gt;Síncrono&lt;/p&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;&lt;input type="radio" name="type" value="assinc"/&gt;Assíncrono&lt;/p&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;&lt;input type="submit" value="ENVIAR"/&gt;&lt;/p&gt;



&lt;/form&gt;







Observe que este formulário envia os dados por método POST para o nosso Controller, que deverá chamar os métodos do EJB.



Crie um servlet chamado Controller (não se esqueça de adicioná-lo ao descritor de implantação). No seu método doPost&nbsp;receba os dados enviados pelo formulário.







@Override

&nbsp; &nbsp; protected void doPost(HttpServletRequest request, HttpServletResponse response)

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throws ServletException, IOException {

&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp; type = request.getParameter("type");

&nbsp; &nbsp; &nbsp; &nbsp; msg = request.getParameter("mensagem");

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp; processRequest(request, response);



&nbsp; &nbsp; }





Criaremos ainda dois métodos auxiliares para o nosso envio de mensagens, o primeiro enviará uma mensagem de forma síncrona, enquanto que o segundo a enviará de forma assíncrona, passando pelo EJB:



&nbsp; &nbsp;&nbsp;

&nbsp; &nbsp; public String processoSincrono(){

&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(msg);

&nbsp; &nbsp; &nbsp; &nbsp; return msg;



&nbsp; &nbsp; }



&nbsp; &nbsp;&nbsp;public String processoAssincrono(){

&nbsp; &nbsp; &nbsp; &nbsp; try {

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; producerSessionbean.sendMessageToQueue(msg);

&nbsp; &nbsp; &nbsp; &nbsp; } catch (Exception ex) {

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ex.printStackTrace();

&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp; return null;

&nbsp; &nbsp; }





Lembre-se de acrescentar a invocação do EJB no começo da classe, juntamente com os atributos passivos:





@EJB



private ProducerSessionbeanLocal producerSB;





Por fim, no método processRequest, colocamos a chamada da mensagem:



try (PrintWriter out = response.getWriter()) {

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;

&nbsp; &nbsp; &nbsp; if(type.equals("sinc"))&nbsp;

&nbsp; &nbsp; &nbsp; {

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;out.println(processoSincrono());

&nbsp; &nbsp; &nbsp; &nbsp;} else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;out.println(processoAssincrono());

&nbsp; &nbsp; &nbsp;&nbsp;}

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp;RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp;rd.include(request, response);

}&nbsp;





Observe que enviamos a página de volta ao index usando o objeto RequestDispatcher, para que possamos enviar mais mensagens. As mensagens enviadas podem ser vistas na aba do Glasfish na saída do console.



Com isso podemos construir o nosso projeto básico de JMS. Use-o para construir suas aplicações com troca de mensagens.



Java Message Service - 1 de 3

Java Message Service - 2 de 3

Java Message Service - 3 de 3



by Pedro Cacique Google