1 package za.org.coefficient.events.beans; 2 3 import java.util.List ; 4 5 import javax.ejb.*; 6 import javax.jms.*; 7 8 import za.org.coefficient.events.*; 9 import za.org.coefficient.events.CoefficientEvent; 10 import za.org.coefficient.events.EventDispatcher; 11 12 24 public class CoefficientEventMessageBean implements javax.ejb.MessageDrivenBean , javax.jms.MessageListener { 25 26 27 private final EventDispatcher dispatcher = new EventDispatcher(); 28 29 32 private MessageDrivenContext ctx = null; 33 34 37 public CoefficientEventMessageBean() {} 38 39 42 public void ejbRemove() throws EJBException {} 43 44 47 public void ejbCreate() throws EJBException {} 48 49 52 public void setMessageDrivenContext(MessageDrivenContext ctx) throws EJBException { 53 this.ctx = ctx; 54 } 55 56 59 public void onMessage(Message message) { 60 if (message instanceof ObjectMessage) { 61 ObjectMessage objMessage = (ObjectMessage) message; 62 try { 63 Object obj = objMessage.getObject(); 64 if (obj instanceof CoefficientEvent) handleEvent((CoefficientEvent) obj); 65 else if (obj instanceof List ){ 66 List list = (List ) obj; 67 if (list.size() == 2){ 68 Object one = list.get(0); 69 Object two = list.get(1); 70 if (one instanceof Class && two instanceof CoefficientEventHandler){ 71 EventHandlerRegistry.getInstance().registerEventHandler((Class ) one, (CoefficientEventHandler)two); 72 } 73 } 74 } 75 } catch (JMSException e) { 76 System.err.println("CoefficientEventMessageBean Exception -> problem getting event object from messsage"); 77 e.printStackTrace(); 78 } catch (Exception e) { 79 System.err.println("CoefficientEventMessageBean Exception -> error handling event message."); 80 e.printStackTrace(); 81 } 82 } else { 83 System.out.println( 84 "CoefficientEventMessageBean Exception -> Expected: ObjectMessage containing a CoefficientEvent instance. Received: " + message.getClass()); 85 } 86 } 87 88 92 private void handleEvent(CoefficientEvent event){ 93 dispatcher.dispatchEvent(event); 94 } 95 96 97 } 98 | Popular Tags |