Diferencia entre revisiones de «JMS con Spring Roo»

De Dos Ideas.
Saltar a: navegación, buscar
Línea 3: Línea 3:
 
Entonces, tomamos el [[Ejemplo de proyecto web ABM con Spring Roo]] y hacemos que una vez creado un nuevo pedido de pizza, se envíe un mensaje a la consola del servidor. Esto último de manera asincrónica.
 
Entonces, tomamos el [[Ejemplo de proyecto web ABM con Spring Roo]] y hacemos que una vez creado un nuevo pedido de pizza, se envíe un mensaje a la consola del servidor. Esto último de manera asincrónica.
  
== Alternativa 1: Modificar el aspecto de la entidad ==
+
== Alternativa 1: Modificar el aspecto de la entidad "Pedido"==
 +
 
 +
* Comentamos la anotacion en el aspecto de la entidad: 
 +
 
 +
<code>
 +
privileged aspect PedidoController_Roo_Controller {
 +
   
 +
//@RequestMapping(value = "/pedido", method = RequestMethod.POST)
 +
    public String PedidoController.create
 +
</code>
 +
 
 +
* Agregamos un método "crear" en el Controller para crear el pedido y donde vamos a inyectar el uso de mensajeria para mandar el aviso:
 +
 
 +
<code>
 +
public class PedidoController {
 +
    @RequestMapping(value = "/pedido", method = RequestMethod.POST)
 +
    public String crear(@Valid Pedido pedido, BindingResult result, ModelMap modelMap) {
 +
    System.out.println("Estoy en PedidoController - crear");
 +
        String resultado = create(pedido, result, modelMap);
 +
        return resultado;
 +
    }
 +
}
 +
</code>
 +
 
 +
4) jms setup --provider ACTIVEMQ_IN_MEMORY --destinationType QUEUE --destinationName dosIdeasQueue
 +
Created SRC_MAIN_RESOURCES\META-INF\spring\applicationContext-jms.xml
 +
Managed SRC_MAIN_RESOURCES\META-INF\spring\applicationContext-jms.xml
 +
Managed ROOT\pom.xml
 +
Managed ROOT\pom.xml
 +
Managed ROOT\pom.xml
 +
Managed ROOT\pom.xml
 +
Managed ROOT\pom.xml
 +
Managed ROOT\pom.xml
 +
 
 +
5) quitamos version en applicationContext-jms.xml:
 +
 
 +
http://activemq.apache.org/schema/core/activemq-core.xsd 
 +
 
 +
Tips Eclipse: http://www.bigsoft.co.uk/blog/index.php/2009/02/01/invalid-activemq-schema-name-space
 +
 
 +
6) field jms template --class com.dosideas.roo.oracle.web.PedidoController --fieldName jmsTemplate
 +
Managed SRC_MAIN_JAVA\com\dosideas\roo\oracle\web\PedidoController.java
 +
Managed SRC_MAIN_JAVA\com\dosideas\roo\oracle\web\PedidoController.java
 +
Managed SRC_MAIN_JAVA\com\dosideas\roo\oracle\web\PedidoController_Roo_Controller.aj
 +
 
 +
7) Ojo con el aspecto de Pedido, le agrega la anotación y hay que volver a comentarla:
 +
 
 +
//@RequestMapping(value = "/pedido", method = RequestMethod.POST)
 +
 
 +
8) agregamos el listener:
 +
 
 +
jms listener class --class com.dosideas.roo.oracle.jms.JmsQueueListener --destinationName dosIdeasQueue
 +
 
 +
--destinationType QUEUE
 +
Created SRC_MAIN_JAVA\com\dosideas\roo\oracle\jms
 +
Created SRC_MAIN_JAVA\com\dosideas\roo\oracle\jms\JmsQueueListener.java
 +
Managed SRC_MAIN_RESOURCES\META-INF\spring\applicationContext-jms.xml
 +
 
 +
 
 +
9) ver cambios
 +
Updated:
 +
 
 +
D:\cblatter\Proyectos\SpringRoo\workspaceSTS232\spring-roo-demo\src\main\java\com\dosideas\roo\oracle\web\Pedido
 +
 
 +
Controller_Roo_Controller.aj 
 +
Updated:
 +
 
 +
D:\cblatter\Proyectos\SpringRoo\workspaceSTS232\spring-roo-demo\src\main\java\com\dosideas\roo\oracle\web\Pedido
 +
 
 +
Controller.java 
 +
Updated:
 +
 
 +
D:\cblatter\Proyectos\SpringRoo\workspaceSTS232\spring-roo-demo\src\main\java\com\dosideas\roo\oracle\domain\Ped
 +
 
 +
ido.java 
 +
Added:
 +
 
 +
D:\cblatter\Proyectos\SpringRoo\workspaceSTS232\spring-roo-demo\src\main\java\com\dosideas\roo\oracle\business 
 +
Added:
 +
 
 +
D:\cblatter\Proyectos\SpringRoo\workspaceSTS232\spring-roo-demo\src\main\java\com\dosideas\roo\oracle\business\J
 +
 
 +
msQueueSenderBoImpl.java 
 +
 
  
 
== Alternativa 2: Utilizar una anotacion ==
 
== Alternativa 2: Utilizar una anotacion ==
 
[[Archivo:roo_css_alternativo.gif | 700px]]
 
  
 
== Ver tambien ==
 
== Ver tambien ==

Revisión del 15:47 28 jul 2010

Con el uso de JMS podemos hacer asincrónica la ocurrencia de un determinado evento.

Entonces, tomamos el Ejemplo de proyecto web ABM con Spring Roo y hacemos que una vez creado un nuevo pedido de pizza, se envíe un mensaje a la consola del servidor. Esto último de manera asincrónica.

Alternativa 1: Modificar el aspecto de la entidad "Pedido"

  • Comentamos la anotacion en el aspecto de la entidad:

privileged aspect PedidoController_Roo_Controller {

//@RequestMapping(value = "/pedido", method = RequestMethod.POST)

   public String PedidoController.create

  • Agregamos un método "crear" en el Controller para crear el pedido y donde vamos a inyectar el uso de mensajeria para mandar el aviso:

public class PedidoController {

   @RequestMapping(value = "/pedido", method = RequestMethod.POST)
   public String crear(@Valid Pedido pedido, BindingResult result, ModelMap modelMap) {
   	System.out.println("Estoy en PedidoController - crear");
       String resultado = create(pedido, result, modelMap);
       return resultado;
   }	

}

4) jms setup --provider ACTIVEMQ_IN_MEMORY --destinationType QUEUE --destinationName dosIdeasQueue Created SRC_MAIN_RESOURCES\META-INF\spring\applicationContext-jms.xml Managed SRC_MAIN_RESOURCES\META-INF\spring\applicationContext-jms.xml Managed ROOT\pom.xml Managed ROOT\pom.xml Managed ROOT\pom.xml Managed ROOT\pom.xml Managed ROOT\pom.xml Managed ROOT\pom.xml

5) quitamos version en applicationContext-jms.xml:

http://activemq.apache.org/schema/core/activemq-core.xsd

Tips Eclipse: http://www.bigsoft.co.uk/blog/index.php/2009/02/01/invalid-activemq-schema-name-space

6) field jms template --class com.dosideas.roo.oracle.web.PedidoController --fieldName jmsTemplate Managed SRC_MAIN_JAVA\com\dosideas\roo\oracle\web\PedidoController.java Managed SRC_MAIN_JAVA\com\dosideas\roo\oracle\web\PedidoController.java Managed SRC_MAIN_JAVA\com\dosideas\roo\oracle\web\PedidoController_Roo_Controller.aj

7) Ojo con el aspecto de Pedido, le agrega la anotación y hay que volver a comentarla:

//@RequestMapping(value = "/pedido", method = RequestMethod.POST)

8) agregamos el listener:

jms listener class --class com.dosideas.roo.oracle.jms.JmsQueueListener --destinationName dosIdeasQueue

--destinationType QUEUE Created SRC_MAIN_JAVA\com\dosideas\roo\oracle\jms Created SRC_MAIN_JAVA\com\dosideas\roo\oracle\jms\JmsQueueListener.java Managed SRC_MAIN_RESOURCES\META-INF\spring\applicationContext-jms.xml


9) ver cambios Updated:

D:\cblatter\Proyectos\SpringRoo\workspaceSTS232\spring-roo-demo\src\main\java\com\dosideas\roo\oracle\web\Pedido

Controller_Roo_Controller.aj Updated:

D:\cblatter\Proyectos\SpringRoo\workspaceSTS232\spring-roo-demo\src\main\java\com\dosideas\roo\oracle\web\Pedido

Controller.java Updated:

D:\cblatter\Proyectos\SpringRoo\workspaceSTS232\spring-roo-demo\src\main\java\com\dosideas\roo\oracle\domain\Ped

ido.java Added:

D:\cblatter\Proyectos\SpringRoo\workspaceSTS232\spring-roo-demo\src\main\java\com\dosideas\roo\oracle\business Added:

D:\cblatter\Proyectos\SpringRoo\workspaceSTS232\spring-roo-demo\src\main\java\com\dosideas\roo\oracle\business\J

msQueueSenderBoImpl.java


Alternativa 2: Utilizar una anotacion

Ver tambien