1 22 package org.jboss.test.cts.test; 23 24 import javax.jms.QueueSession ; 25 import javax.jms.Queue ; 26 import javax.jms.QueueSender ; 27 import javax.jms.TextMessage ; 28 import javax.jms.QueueReceiver ; 29 import javax.jms.Message ; 30 import javax.jms.ObjectMessage ; 31 32 import EDU.oswego.cs.dl.util.concurrent.CountDown; 33 import org.jboss.logging.Logger; 34 35 39 public class MDBInvoker extends Thread 40 { 41 Logger log; 42 QueueSession session; 43 Queue queueA; 44 Queue queueB; 45 int id; 46 CountDown done; 47 Exception runEx; 48 49 public MDBInvoker(QueueSession session, Queue queueA, Queue queueB, int id, 50 CountDown done, Logger log) 51 { 52 super("MDBInvoker#"+id); 53 this.session = session; 54 this.queueA = queueA; 55 this.queueB = queueB; 56 this.id = id; 57 this.done = done; 58 this.log = log; 59 } 60 public void run() 61 { 62 log.debug("Begin run, this="+this); 63 try 64 { 65 QueueSender sender = session.createSender(queueA); 66 TextMessage message = session.createTextMessage(); 67 message.setText(this.toString()); 68 sender.send(message); 69 QueueReceiver receiver = session.createReceiver(queueB); 70 Message reply = receiver.receive(10000); 71 if( reply == null ) 72 runEx = new IllegalStateException ("Message receive timeout"); 73 else if( reply instanceof ObjectMessage ) 74 { 75 ObjectMessage om = (ObjectMessage ) reply; 76 runEx = (Exception ) om.getObject(); 77 } 78 sender.close(); 79 receiver.close(); 80 } 81 catch(Exception e) 82 { 83 runEx = e; 84 } 85 finally 86 { 87 done.release(); 88 log.debug("End run, this="+this); 89 } 90 } 91 92 } 93 | Popular Tags |