...
| Bloque de código | ||
|---|---|---|
| ||
@In
private PushEventsManager pushEventsManager;
public void onSomeEntityChange(Entity entity) {
pushEventsManager.fireEvent(new MyPushEvent(entity.getSomeProperty()));
} |
| Info |
|---|
IMPORTANTE EN FUNDEWEB |
Todas estas clases, están añadidas en las librerías de FundeWeb, y el sistema también esta añadido a partir del Arquetipo versión 2.0.11, que añade un perfil llamada cluster que permite terne fácilmente esta funcionalidad. Solo tendréis que usar el PushEventsManager para enviar los mensajes a través de las conexiones push. Para añadir esa configuración a una aplicación existente hay que descargar el fichero push-cluster.zip y descomprimir con Extraer aquí en la raíz del proyecto. Con esto crearemos la carpeta web/src/main/profiles/cluster.
En esta carpeta tendremos la carpeta java donde se encuentra la clase PushReceiver (la única que no esta en las librerías de FundeWeb). La ruta a esta clase, es/um/atica/__rootArtifactId__/push (que es una ruta de paquete de código fuente), la tendremos que modificar, cambiando __rootArtifactId__ por el identificador de la aplicación. En la propia clase PushReceiver, tendremos que cambiar los valores ${rootArtifactId} por el identificador de la aplicación (igual que antes).
También tenemos que modificar el fichero web/src/main/profiles/cluster/components.xml, tendremos que cambiar los valores ${rootArtifactId} por el identificador de la aplicación (igual que antes).
Para finalizar, en el POM del módulo Web, tendremos que añadir un perfil a <profiles> (el elemento XML puede estar comentado, por lo que dejamos sin comentar solo las etiquetas <profiles> y </profiles>):
| Bloque de código | ||
|---|---|---|
| ||
<profile>
<id>cluster</id>
<properties>
<cluster.profile.folder>src/main/profiles/cluster</cluster.profile.folder>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-cluster-java</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${cluster.profile.folder}/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>be.hikage.maven.plugins</groupId>
<artifactId>maven-xmlmerger-plugin</artifactId>
<executions>
<execution>
<id>merge-cluster-components_xml</id>
<phase>generate-resources</phase>
<goals>
<goal>mergexml</goal>
</goals>
<configuration>
<baseDirectory>${basedir}/src/main/webapp/WEB-INF</baseDirectory>
<inputDirectory>${cluster.profile.folder}/xmlmerge</inputDirectory>
<outputDirectory>${basedir}/src/main/webapp/WEB-INF</outputDirectory>
<mergeFilenamePattern>()(components\.xml)</mergeFilenamePattern>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>es.um.atica.fundeweb</groupId>
<artifactId>fundeweb-cluster</artifactId>
</dependency>
</dependencies>
</profile> |
Para finalizar, tenemos que poner un JIRA a DJ-AT-SIST-MIDDLE (MIDWEB), como Petición de Servicio y al componente JMS, indicando que hay que crear una cola JMS para la aplicación XXXXX con rutas JNDI:
- Para el Tema (TOPIC): jms/_nombre_aplicacion_minusculas_PushTopic
- Para la fábrica de conexiones: jms/_nombre_aplicacion_minusculas_PushConnectionFactory
Más información sobre JMS:
...