4/15/09


Weblogic Message-Driven Beans

First attempt: one MDB

package com;

import javax.ejb.MessageDrivenBean;
import javax.jms.MessageListener;
import javax.jms.Message;
import weblogic.ejb.GenericMessageDrivenBean;
import weblogic.ejbgen.MessageDriven;


@MessageDriven(ejbName = "MyFirsMDB", destinationJndiName = "MyDefaultQueue", destinationType = "javax.jms.Queue")
public class MyFirsMDB extends GenericMessageDrivenBean implements
MessageDrivenBean, MessageListener {

private Long id = System.currentTimeMillis();

public void onMessage(Message msg) {
try {
Thread.sleep(1000);
System.out.println("->" + id.toString() + " :"+ msg.getStringProperty("msg"));
} catch (Exception e) {
e.printStackTrace();
}
}
}


->1239798602084 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798602147 :My AA String Message.
->1239798602147 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798602084 :My AA String Message.
->1239798602147 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798602147 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798602147 :My AA String Message.
->1239798602084 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798602147 :My AA String Message.
->1239798602084 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798602147 :My AA String Message.
->1239798602084 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798795659 :My AA String Message.
->1239798602147 :My AA String Message.
->1239798602147 :My AA String Message.
->1239798795659 :My AA String Message.
->1239798602131 :My AA String Message.
->1239798602084 :My AA String Message.

Next attempt: two MDB on one Destination (queue)
Firs one:

package com;

import javax.ejb.MessageDrivenBean;
import javax.jms.MessageListener;
import javax.jms.Message;
import weblogic.ejb.GenericMessageDrivenBean;
import weblogic.ejbgen.MessageDriven;

@MessageDriven(ejbName = "MyFirsMDB", destinationJndiName = "MyDefaultQueue", destinationType = "javax.jms.Queue")
public class MyFirsMDB extends GenericMessageDrivenBean implements
MessageDrivenBean, MessageListener {

private String id = "A_" + new Long(System.currentTimeMillis()).toString();

public void onMessage(Message msg) {
try {
Thread.sleep(1000);
System.out.println(id +" : "+ msg.getStringProperty("msg"));
} catch (Exception e) {
e.printStackTrace();
}
}
}

Second one:

package com;

import javax.ejb.MessageDrivenBean;
import javax.jms.MessageListener;
import javax.jms.Message;
import weblogic.ejb.GenericMessageDrivenBean;
import weblogic.ejbgen.MessageDriven;

@MessageDriven(ejbName = "MySecondMDB", destinationJndiName = "MyDefaultQueue", destinationType = "javax.jms.Queue")
public class MySecondMDB extends GenericMessageDrivenBean implements
MessageDrivenBean, MessageListener {

private String id = "B_" + new Long(System.currentTimeMillis()).toString();

public void onMessage(Message msg) {
try {
Thread.sleep(1000);
System.out.println(id +" : "+ msg.getStringProperty("msg"));
} catch (Exception e) {
e.printStackTrace();
}
}
}


B_1239799361946 : My AA String Message.
B_1239799361946 : My AA String Message.
B_1239799366712 : My AA String Message.
B_1239799366993 : My AA String Message.
B_1239799367274 : My AA String Message.
B_1239799367274 : My AA String Message.
B_1239799366993 : My AA String Message.
B_1239799366712 : My AA String Message.
B_1239799361946 : My AA String Message.
B_1239799367274 : My AA String Message.
B_1239799366993 : My AA String Message.
B_1239799366712 : My AA String Message.
B_1239799367274 : My AA String Message.
B_1239799366712 : My AA String Message.
B_1239799367274 : My AA String Message.
B_1239799366712 : My AA String Message.
A_1239799377978 : My AA String Message.
A_1239799378290 : My AA String Message.
A_1239799378290 : My AA String Message.
A_1239799377978 : My AA String Message.
A_1239799383931 : My AA String Message.
A_1239799384197 : My AA String Message.
A_1239799378290 : My AA String Message.
A_1239799377978 : My AA String Message.
A_1239799377978 : My AA String Message.
A_1239799378290 : My AA String Message.
A_1239799377978 : My AA String Message.
A_1239799378290 : My AA String Message.
A_1239799377978 : My AA String Message.
A_1239799378290 : My AA String Message.
A_1239799377978 : My AA String Message.
A_1239799384197 : My AA String Message.
B_1239799366712 : My AA String Message.
B_1239799366712 : My AA String Message.
B_1239799367274 : My AA String Message.
B_1239799366712 : My AA String Message.
B_1239799367274 : My AA String Message.
B_1239799367274 : My AA String Message.
B_1239799367274 : My AA String Message.
B_1239799366712 : My AA String Message.
B_1239799366993 : My AA String Message.
B_1239799367274 : My AA String Message.
B_1239799361946 : My AA String Message.
B_1239799367274 : My AA String Message.
B_1239799361946 : My AA String Message.
B_1239799367274 : My AA String Message.
B_1239799366993 : My AA String Message.
B_1239799366993 : My AA String Message.
A_1239799384197 : My AA String Message.
A_1239799377978 : My AA String Message.
A_1239799378290 : My AA String Message.
A_1239799384197 : My AA String Message.
A_1239799377978 : My AA String Message.
A_1239799378290 : My AA String Message.
A_1239799384197 : My AA String Message.
A_1239799384197 : My AA String Message.
A_1239799378290 : My AA String Message.
A_1239799377978 : My AA String Message.
A_1239799383931 : My AA String Message.
A_1239799377978 : My AA String Message.

4/14/09


Point-to-Point Messaging Configuration


The point-to-point (PTP) messaging model enables one application to send a message to another. PTP messaging applications send and receive messages using named queues.

Weblogic JMS Queues

Receiving Messages Synchronously:

import javax.servlet.http.HttpSession;
import org.apache.beehive.netui.pageflow.PageFlowController;
import org.apache.beehive.netui.pageflow.annotations.Jpf;
import org.apache.beehive.netui.pageflow.Forward;
import org.apache.log.format.Formatter;
import org.apache.log.output.jms.TextMessageBuilder;

import javax.jms.*;
import javax.mail.search.MessageIDTerm;
import javax.naming.*;
import weblogic.jndi.*;
import javax.transaction.UserTransaction;
import weblogic.jms.extensions.*;


@Jpf.Controller(simpleActions = { @Jpf.SimpleAction(name = "begin", path = "index.jsp") })
public class Controller extends PageFlowController {

@Jpf.Action(forwards = { @Jpf.Forward(name = "success", path = "index.jsp") })
public Forward newAction1() throws NamingException, JMSException {

InitialContext ic = new InitialContext();
QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) ic.lookup("weblogic.jms.ConnectionFactory");

QueueConnection qc = queueConnectionFactory.createQueueConnection();
QueueSession qSession = qc.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);

Queue queue = (Queue) ic.lookup("MyDefaultQueue");

QueueReceiver qReceiver = qSession.createReceiver(queue);
qReceiver = qSession.createReceiver(queue);
//qReceiver.setMessageListener(this);

//QueueSender qSender = qSession.createSender(queue);
//Message msg = qSession.createMessage();
//msg.setStringProperty("msg", "My AA String Message.");
//qSender.send(msg);

qc.start();
System.out.println(qReceiver.receive().getStringProperty("msg"));
qc.close();

Forward forward = new Forward("success");
return forward;
}


@Override
protected void onCreate() {
}

@Override
protected void onDestroy(HttpSession session) {
}
}


--------------------------------------------------------

Receiving Messages Asynchronously:

import javax.servlet.http.HttpSession;
import org.apache.beehive.netui.pageflow.PageFlowController;
import org.apache.beehive.netui.pageflow.annotations.Jpf;
import org.apache.beehive.netui.pageflow.Forward;
import org.apache.log.format.Formatter;
import org.apache.log.output.jms.TextMessageBuilder;

import javax.jms.*;
import javax.mail.search.MessageIDTerm;
import javax.naming.*;
import weblogic.jndi.*;
import javax.transaction.UserTransaction;
import weblogic.jms.extensions.*;


@Jpf.Controller(simpleActions = { @Jpf.SimpleAction(name = "begin", path = "index.jsp") })
public class Controller extends PageFlowController implements javax.jms.MessageListener{

public void onMessage(Message message) {
try {
System.out.println("---------->> " + message.getStringProperty("msg"));
} catch (JMSException e) {
e.printStackTrace();
}
}

@Jpf.Action(forwards = { @Jpf.Forward(name = "success", path = "index.jsp") })
public Forward newAction1() throws NamingException, JMSException {

InitialContext ic = new InitialContext();
QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) ic.lookup("weblogic.jms.ConnectionFactory");

QueueConnection qc = queueConnectionFactory.createQueueConnection();
QueueSession qSession = qc.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);

Queue queue = (Queue) ic.lookup("MyDefaultQueue");

QueueReceiver qReceiver = qSession.createReceiver(queue);
qReceiver = qSession.createReceiver(queue);
qReceiver.setMessageListener(this);
qc.start();

QueueSender qSender = qSession.createSender(queue);
Message msg = qSession.createMessage();
msg.setStringProperty("msg", "My BB String Message.");
qSender.send(msg);

Forward forward = new Forward("success");
return forward;
}


@Override
protected void onCreate() {
}

@Override
protected void onDestroy(HttpSession session) {
}
}