| Advertencia |
|---|
EN CONSTTRUCCIÓN ... |
Tabla de contenidos
| Advertencia |
|---|
No añadir código en la aplicación, hasta leer toda la documentación. |
...
| Bloque de código | ||
|---|---|---|
| ||
public final class PushEventMyPushEvent implements orges.um.jbossatica.seamfaces.corepush.EventObjectPushEvent { private final String user; private final String message; public PushEventMyPushEvent(String message) { this.message =(null, message); } public MyPushEvent(String publicuser, String getMessage(message) { return messagethis.user = user; this.messag e= message; } } public String getMessage() { return message; } public String getUser() { return user; } } |
Después, utiliza Después, utiliza org.jboss.seam.core.Events.raiseEvent(org.jboss.seam.core.EventObject), para lanzar el evento
...
Ahora se puede inyectar el componente pruebaPushPublisher pushPublisher en cualquier componente:
| Bloque de código | ||
|---|---|---|
| ||
@Name("pushEventsManager ")
public class PushEventsManager {
@In
private TopicPublisher pushPublisher;
@In
private TopicSession topicSession;
public void fireEvent(PushEvent event) {
try {
pushPublisher.publish(topicSession.createObjectMessage(event.getMessage()));
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
} |
...
| Bloque de código | ||
|---|---|---|
| ||
@In
private PushEventsManager pushEventsManager;
public void onSomeEntityChange(Entity entity) {
pushEventsManager.fireEvent(new PushEventMyPushEvent(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 Para FundeWeb hemos añadido un sistema 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 este 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:
...
| Bloque de código | ||
|---|---|---|
| ||
<!-- Exception handling --> <web:exception-filter url-pattern="@default_url_pattern@" installed="true" /> <!-- Identity Logging --> <web:logging-filter url-pattern="@default_url_pattern@" installed="true" /> <!-- Character encoding --> <web:character-encoding-filter encoding="UTF-8" override-client="true" installed="true" url-pattern="@default_url_pattern@" /> |
Si se usa el atributo atributo regex-url-pattern, para este caso añadimos la propiedad default_regex_url_pattern en el fichero components.properties, con el valor definido para la propiedad junto con la que se usa para las peticiones push, si por ejemplo, el valor de la propiedad es .*\.seam, entonces añadimos:
...