Diferencia entre revisiones de «JMS con Spring Roo»
Línea 27: | Línea 27: | ||
</code> | </code> | ||
− | + | * Ejecutamos el comando JMS de Spring Roo para crear una cola en memoria: | |
+ | |||
+ | <code> | ||
+ | jms setup --provider ACTIVEMQ_IN_MEMORY --destinationType QUEUE --destinationName dosIdeasQueue | ||
Created SRC_MAIN_RESOURCES\META-INF\spring\applicationContext-jms.xml | Created SRC_MAIN_RESOURCES\META-INF\spring\applicationContext-jms.xml | ||
Managed SRC_MAIN_RESOURCES\META-INF\spring\applicationContext-jms.xml | Managed SRC_MAIN_RESOURCES\META-INF\spring\applicationContext-jms.xml | ||
Línea 36: | Línea 39: | ||
Managed ROOT\pom.xml | Managed ROOT\pom.xml | ||
Managed ROOT\pom.xml | Managed ROOT\pom.xml | ||
+ | </code> | ||
− | + | * Modificamos la configuración de la versión de MQ. En el archivo applicationContext-jms.xml configuramos http://activemq.apache.org/schema/core/activemq-core.xsd. Para que no muestre el error desde el IDE ver [[Tips Eclipse: http://www.bigsoft.co.uk/blog/index.php/2009/02/01/invalid-activemq-schema-name-space como modificar las preferencias de Eclipse]] | |
− | |||
− | http://activemq.apache.org/schema/core/activemq-core.xsd | ||
− | + | * Ejecutamos el comando de Spring Roo para crear el template: | |
− | + | <code> | |
+ | 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.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 | Managed SRC_MAIN_JAVA\com\dosideas\roo\oracle\web\PedidoController_Roo_Controller.aj | ||
+ | </code> | ||
− | + | Cada vez que se ejecuta un comando, Spring Roo re-escribe la anotación en el aspecto: | |
− | + | <code> | |
+ | @RequestMapping(value = "/pedido", method = RequestMethod.POST) | ||
+ | </code> | ||
− | + | Entonces, queda anotado en el aspecto y el controller de la entidad y al crear un pedido en runtime, da error. | |
− | + | * Ejecutamos el comando de Spring Roo para crear el listener: | |
− | --destinationType QUEUE | + | <code> |
+ | 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 | ||
Created SRC_MAIN_JAVA\com\dosideas\roo\oracle\jms\JmsQueueListener.java | Created SRC_MAIN_JAVA\com\dosideas\roo\oracle\jms\JmsQueueListener.java | ||
Managed SRC_MAIN_RESOURCES\META-INF\spring\applicationContext-jms.xml | Managed SRC_MAIN_RESOURCES\META-INF\spring\applicationContext-jms.xml | ||
− | + | </code> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Alternativa 2: Utilizar una anotacion == | == Alternativa 2: Utilizar una anotacion == | ||
== Ver tambien == | == Ver tambien == | ||
+ | |||
* [[Spring Roo]] | * [[Spring Roo]] | ||
[[Category: Spring Framework]] | [[Category: Spring Framework]] |
Revisión del 16:02 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; }
}
- Ejecutamos el comando JMS de Spring Roo para crear una cola en memoria:
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
- Modificamos la configuración de la versión de MQ. En el archivo applicationContext-jms.xml configuramos http://activemq.apache.org/schema/core/activemq-core.xsd. Para que no muestre el error desde el IDE ver Tips Eclipse: http://www.bigsoft.co.uk/blog/index.php/2009/02/01/invalid-activemq-schema-name-space como modificar las preferencias de Eclipse
- Ejecutamos el comando de Spring Roo para crear el template:
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
Cada vez que se ejecuta un comando, Spring Roo re-escribe la anotación en el aspecto:
@RequestMapping(value = "/pedido", method = RequestMethod.POST)
Entonces, queda anotado en el aspecto y el controller de la entidad y al crear un pedido en runtime, da error.
- Ejecutamos el comando de Spring Roo para crear 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