The message driven beans are consumers of JMS messages. When message is received from the queue, we can find out a lot of details about the message. The following snippet of MDB tries to find out like name, id , destination , type etc.
<!--break-->
Snippet
- importjava.util.*;
- importjavax.ejb.*;
- importjavax.jms.*;
- importjavax.naming.*;
- publicclass SnoopMDB implements MessageDrivenBean, MessageListener
- {
- private MessageDrivenContext context;
- privateContext jndiContext;
- publicvoid ejbCreate ()throws CreateException {}
- publicvoid ejbRemove(){}
- publicvoid setMessageDrivenContext(MessageDrivenContext ctx)
- {
- context = ctx;
- try
- {
- jndiContext =newInitialContext();
- }
- catch(NamingException ne)
- {
- thrownew EJBException(ne);
- }
- }
- /**
- * The business logic
- */
- publicvoid onMessage(Message msg)
- {
- try
- {
- String text =null;
- System.out.println("===== New Message =====");
- System.out.println("Type: "+ msg.getClass().getName());
- System.out.println("Destination: "+ msg.getJMSDestination());
- System.out.println("Message ID: "+ msg.getJMSMessageID());
- if( msg instanceof TextMessage )
- {
- text =((TextMessage)msg).getText();
- }
- elseif( msg instanceof ObjectMessage )
- {
- text =((ObjectMessage)msg).getObject().toString();
- }
- elseif( msg instanceof MapMessage )
- {
- StringBuffer sb =newStringBuffer("\n");
- MapMessage mm =(MapMessage)msg;
- Enumerationenum= mm.getMapNames();
- while(enum.hasMoreElements())
- {
- String name =(String)enum.nextElement();
- Object val = mm.getObject(name);
- sb.append("> "+ name +" = "+ val +'\n');
- }
- text = sb.toString();
- }
- if(text !=null)
- System.out.println("Content: "+ text);
- }
- catch(Throwable t)
- {
- System.out.println("?! Failed: "+ t.getMessage());
- }
- }
- }