Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

Bloque de código
languagejava
public final class PushEventMyPushEvent implements orges.um.jbossatica.seamfaces.corepush.EventObjectPushEvent {

    private final String user; 
    private final String message;  

    public MyPushEvent(String message) {
        this(null, message);
    } 

    public PushEventMyPushEvent(String user, String message) {
        this.user = user;
        this.messag e= message; 
    }

    public String getMessage() {
        this.messagereturn = message;
    }

    public String getMessagegetUser() {
        return messageuser;
    } 
}

Después, utiliza org.jboss.seam.core.Events.raiseEvent(org.jboss.seam.core.EventObject), para lanzar el evento

...

Bloque de código
languagejava
@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 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
languagexml
		<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:

...