Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/03/2011, 19:57
luisfm
 
Fecha de Ingreso: octubre-2006
Ubicación: manizales
Mensajes: 23
Antigüedad: 17 años, 6 meses
Puntos: 0
Consumir mensajes con MDB en jms

Buenas noches queridos amigos,

Tengo un problema con un mdb. Tengo el cliente que envía los mensajes a una cola creada en el servidor weblogic 10.3, efectivamente los envía, pero debo consumirlo por medio del mdb y no me lo consume, el código del mdb es el siguiente:


package sv.com.tigo.suscripcion.ejb;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

/**
* @author fmarin
*
*/
@MessageDriven(mappedName = "queue/SuscriptionQueue",activationConfig = {
@ActivationConfigProperty(propertyName="destinatio nType", propertyValue="javax.jms.Queue"),
@ActivationConfigProperty(propertyName="destinatio n", propertyValue="queue/SuscriptionQueue")
}
)
public class MotorPeticionesPruebaMDB implements MessageDrivenBean, MessageListener {
/**
*
*/
private static final long serialVersionUID = 1L;

public void setMessageDrivenContext(MessageDrivenContext aContext) {
}

public void ejbCreate() { }
public void ejbRemove() { }

public void onMessage(Message aMessage) {
try {
TextMessage txtMessage = (TextMessage) aMessage;
String mensaje;
mensaje = txtMessage.getText();
System.out.println(mensaje);
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}


el cliente es:

package sv.com.tigo.suscripcion.ejb;

import java.util.Hashtable;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.jms.Queue;

import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;

/**
* @author fmarin
*
*/
@Stateless (mappedName="SuscriptionRequest")
public class SuscriptionRequestEJB implements SuscriptionRequestEJBLocal, SuscriptionRequestEJBRemote{

public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactor y";
public final static String PROVIDER_URL_URL="t3://localhost:7001";

public final static String JMS_FACTORY="suscriptionRequestConection";
public final static String QUEUE="SuscriptionQueue";

public void SolicitudSuscripcion(String campo) {

try{

System.out.println(JMS_FACTORY+""+QUEUE);
//Obtenemos el InitialContext
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, PROVIDER_URL_URL);
InitialContext ctx = new InitialContext(env);

//Buscamos el factory y la conexion a la cola
QueueConnectionFactory qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
QueueConnection qcon = qconFactory.createQueueConnection();

//Buscamos la cola
QueueSession qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = (Queue) ctx.lookup(QUEUE);

//Creamos el mensaje
TextMessage msg = qsession.createTextMessage();
msg.setText(campo);

//Enviamos el mensaje
QueueSender qsender = qsession.createSender(queue);
qsender.send(msg);

//cerramos todo
qsender.close();
qsession.close();
qcon.close();

}catch (Exception e) {
System.out.println("Error haciendo la prueba de inserción a la cola"+e);
}

}

}


SOLICITO SU AYUDA!!!!!!!

GRACIAS!!!!