Source code: com/panacya/platform/service/bus/mdb/SimpleMessageReceiverBean.java
1 package com.panacya.platform.service.bus.mdb;
2
3 import com.panacya.platform.service.bus.sender.SenderClient;
4 import com.panacya.platform.service.bus.sender.SenderException;
5 import org.apache.commons.logging.Log;
6 import org.apache.commons.logging.LogFactory;
7
8 import javax.ejb.CreateException;
9 import javax.ejb.MessageDrivenBean;
10 import javax.ejb.MessageDrivenContext;
11 import javax.jms.JMSException;
12 import javax.jms.Message;
13 import javax.jms.MessageListener;
14 import javax.jms.TextMessage;
15 import javax.naming.NamingException;
16 import java.rmi.RemoteException;
17
18 /**
19 * @author <a href="mailto:michael.gaffney@panacya.com">Michael Gaffney </a>
20 */
21
22 public class SimpleMessageReceiverBean implements MessageDrivenBean, MessageListener {
23
24 private static final String SENDER_NAME = "java:comp/env/ejb/Sender";
25 private Log _log = LogFactory.getLog(SimpleMessageReceiverBean.class);
26 private MessageDrivenContext context;
27
28 public SimpleMessageReceiverBean() {
29 if (_log.isInfoEnabled()) {
30 _log.info("SimpleMessageReceiverBean.SimpleMessageReceiverBean");
31 }
32 }
33
34 public void onMessage(Message message) {
35 if (_log.isInfoEnabled()) {
36 _log.info("SimpleMessageReceiverBean.onMessage");
37 }
38 try {
39 handleMessage(message);
40 } catch (JMSException e) {
41 _log.error(e.toString(), e);
42 } catch (NamingException e) {
43 _log.error(e.toString(), e);
44 } catch (RemoteException e) {
45 _log.error(e.toString(), e);
46 } catch (CreateException e) {
47 _log.error(e.toString(), e);
48 } catch (SenderException e) {
49 _log.error(e.toString(), e);
50 }
51 }
52
53 private void handleMessage(Message message) throws JMSException, NamingException, RemoteException, SenderException, CreateException {
54 if (message instanceof TextMessage) {
55 TextMessage textMessage = (TextMessage) message;
56 if (_log.isInfoEnabled()) {
57 _log.info("Message received: " + textMessage.getText());
58 }
59 send(textMessage.getText());
60 } else {
61 if (_log.isInfoEnabled()) {
62 _log.info("Unknown message type received: " + message.toString());
63 }
64 send("Unknown message type: " + message.toString());
65 }
66 }
67
68 public void ejbRemove() {
69 if (_log.isInfoEnabled()) {
70 _log.info("SimpleMessageReceiverBean.ejbRemove");
71 }
72 }
73
74 public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext) {
75 if (_log.isInfoEnabled()) {
76 _log.info("SimpleMessageReceiverBean.setMessageDrivenContext");
77 }
78 context = messageDrivenContext;
79 }
80
81 public void ejbCreate() {
82 if (_log.isInfoEnabled()) {
83 _log.info("SimpleMessageReceiverBean.ejbCreate");
84 }
85 }
86
87 private void send(String recMessage) throws NamingException, RemoteException, CreateException, SenderException {
88 sendToEJB(recMessage);
89 }
90
91 private void sendToEJB(String recMessage) throws NamingException, RemoteException, CreateException, SenderException {
92 SenderClient senderClient = new SenderClient(SENDER_NAME);
93 senderClient.sendMessage(recMessage);
94 }
95 }