Menú Curso Java EJB's : Código Fuente "BolsaDeValores" utilizado como Emisor de Mensajes para un "Messaging Bean"

(Anterior) Messaging Beans

El siguiente Cliente envía el valor de ciertas acciones -- en forma de mensaje -- hacia el "Messaging Bean" diseñado anteriormente.

Clase BolsaDeValores


package com.osmosislatina.ejb.bolsa;

import javax.naming.*;

import javax.jms.*;
import java.util.*;

public class BolsaDeValores { 

 
    private TopicConnectionFactory tcf;
    private TopicConnection tcon;           
    private TopicSession tsession;
    private Topic topic;
    private TopicPublisher tpublisher;
    private Context ctx;

    public BolsaDeValores() throws NamingException { 
       try { 
	   ctx = getInitialContext();
	   tcf = (TopicConnectionFactory)ctx.lookup("ConnectionFactory");
	   tcon = tcf.createTopicConnection(); 
	   tcon.start();
       } catch (Exception exception) { 
	   exception.printStackTrace();
       }
    }

 

    private Context getInitialContext() throws NamingException { 
	try { 
	    return new InitialContext();
	} catch (NamingException ex) { 
	    System.out.println("No fue posible crear el contexto para ubicar nombres en JNDI" + ex );
	    throw ex;
	} 
    }


    public void procesar() throws Exception { 
	try { 
	tsession = tcon.createTopicSession(false,1);
	topic = (Topic)ctx.lookup("topic/acciones");
	
	tpublisher = tsession.createPublisher(topic);	

	TextMessage message = tsession.createTextMessage();
	message.setText("RedHat 53 1/2, Microsoft 64 3/4, Dell 34 2/3");

	tpublisher.publish(message);

	System.out.println("Valores procesados");

	    } catch (Exception ex) { 
		System.err.println("No fue posible procesar el valor de las acciones : "  + ex);
	    }
    }

 	    
    public static void main(String[] args) throws Exception {

       BolsaDeValores tarjeta = new BolsaDeValores();
       tarjeta.procesar();

    }

}

  • El Cliente anterior se encuentra fraccionado por métodos con la intención de ilustrar un diseño propio en Java.

  • El método principal main genera una instancia de la Clase en cuestión llamada tarjeta y sobre esta misma instancia se manda llamar el método procesar().

  • El método BolsaDeValores() representa el conocido "Constructor" del lenguaje Java, el cual es llamado al iniciarse cualquier instancia de la Clase, en esta clase el constructor realiza las siguientes tareas:

    • Asigna un Contexto JNDI al cliente (A través de otra función)

    • Realiza una búsqueda JNDI por la fabrica ("ConnectionFactory") que proporciona Tópicos Messaging.

    • Se genera una conexión hacia la Fabrica antes mencionada.

  • getInitialContext es el método llamado dentro del "Constructor" que adquiere el Contexto JNDI, nótese que a diferencia de otros clientes no fue definido ningún tipo de parámetro en InitialContext(); este detalle es explicado en la siguiente sección.

  • procesar es el método que envía el mensaje hacia el "Messaging EJB", ejecuta lo siguiente:

    • Genera una sesión hacia el topic, el parámetro false indica que no se desean utilizar transacciones, mientras 1 indica como se debe responder a mensajes recibidos, siendo que este cliente funciona como un emisor y no como un subscriptor éste último parámetro es irrelevante.

    • Se realiza una búsqueda por el topic que ha sido asignado al "EJB" (acciones), el prefijo topic es una convención utilizada en JNDI para sistemas messaging.

    • Se genera el productor de mensajes tpublisher, indicando que éste enviará sus mensajes hacia el tópico antes descrito.

    • Es creado y publicado el mensaje con los valores apropiados.

    • Se imprime un mensaje a pantalla indicando éxito de envío.

Terminos Legales de Contenido ©2000-2011 Osmosis Latina

Diseñado bajo estándares : XHTML   CSS  

webmaster@osmosislatina.com