KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > it > bigatti > c6 > BadgeServer


1 /**
2  * BadgeServer
3  */

4 package it.bigatti.c6;
5
6 import java.sql.SQLException JavaDoc;
7
8 import javax.jms.DeliveryMode JavaDoc;
9 import javax.jms.JMSException JavaDoc;
10 import javax.jms.Message JavaDoc;
11 import javax.jms.MessageListener JavaDoc;
12 import javax.jms.QueueConnection JavaDoc;
13 import javax.jms.QueueConnectionFactory JavaDoc;
14 import javax.jms.QueueSender JavaDoc;
15 import javax.jms.QueueSession JavaDoc;
16 import javax.jms.Session JavaDoc;
17 import javax.jms.TextMessage JavaDoc;
18
19 import org.mr.api.jms.MantaQueueConnectionFactory;
20
21 /**
22  * @author max@bigatti.it
23  * Publications of same author on the italian magazine ioProgrammo.
24  * Forums at: http://forum.ioprogrammo.it
25  */

26 public class BadgeServer {
27     private static final int MESSAGE_TTL = 100000;
28     
29     private QueueConnection JavaDoc con = null;
30     private QueueSession JavaDoc sendSession = null;
31     private QueueSession JavaDoc receiveSession = null;
32     private QueueSender JavaDoc sender = null;
33
34     public BadgeServer() throws JMSException JavaDoc, InterruptedException JavaDoc {
35         QueueConnectionFactory JavaDoc conFactory =
36             (QueueConnectionFactory JavaDoc) new MantaQueueConnectionFactory();
37         
38         //Crea una connessione alla coda
39
con = conFactory.createQueueConnection();
40         con.start();
41         //Ottiene le sessioni di invio e ricezione
42
sendSession = (QueueSession JavaDoc)
43         con.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
44         receiveSession = (QueueSession JavaDoc)
45         con.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
46         
47         //Crea la coda di invio
48
javax.jms.Queue JavaDoc sendQueue = sendSession.createQueue(
49                 C6Constants.RECEIVE_QUEUE_NAME);
50         sender = sendSession.createSender(sendQueue);
51         
52         //Crea la coda di ricezione
53
javax.jms.Queue JavaDoc receiveQueue = receiveSession.createQueue(
54                 C6Constants.SEND_QUEUE_NAME);
55         javax.jms.QueueReceiver JavaDoc qReceiver =
56             receiveSession.createReceiver(receiveQueue);
57         
58         //Aggiunge l'ascoltatore di eventi per i messaggi in arrivo
59
qReceiver.setMessageListener( new MessageListener JavaDoc() {
60             public void onMessage(Message JavaDoc message) {
61                 final Message JavaDoc msg = message;
62                 Thread JavaDoc th = new Thread JavaDoc( new Runnable JavaDoc() {
63                     public void run() {
64                         TextMessage JavaDoc tmsg = (TextMessage JavaDoc)msg;
65                         String JavaDoc line;
66                         try {
67                             line = tmsg.getText();
68                             System.out.println( "[receive]" + line );
69                             
70                             //estrae il codice badge
71
String JavaDoc badge = BadgeDAO.badgeCode(line);
72                             
73                             //verifica validitˆ badge
74
//String badgeEsiste =
75
//BadgeDAO.getInstance().verificaBadge( badge ) ? "OK" : "KO";
76

77                             String JavaDoc badgeEsiste = "OK";
78                             //invia il messaggio di risposta
79
TextMessage JavaDoc msgSend = sendSession.createTextMessage();
80                             msgSend.setText( "BADGE: " + line + " " + badgeEsiste );
81                             
82                             sender.send( msgSend,
83                                     DeliveryMode.NON_PERSISTENT,
84                                     Message.DEFAULT_PRIORITY,
85                                     MESSAGE_TTL);
86
87                             System.out.println( "[send] " + msgSend.getText() );
88                             
89                             if (badgeEsiste.equals("OK")) {
90                                 BadgeDAO.getInstance().registra(badge);
91                             }
92                         } catch (JMSException JavaDoc e) {
93                             e.printStackTrace();
94                         } catch (SQLException JavaDoc e) {
95                             e.printStackTrace();
96                         } catch (ClassNotFoundException JavaDoc e) {
97                             e.printStackTrace();
98                         }
99                     }
100                 } );
101                 th.start();
102             }
103         });
104         
105         while( true ) {
106             System.out.println("server...");
107             Thread.sleep( 5000 );
108         }
109     }
110     
111     public static void main(String JavaDoc[] args) {
112         try {
113             new BadgeServer();
114         } catch (JMSException JavaDoc e) {
115             e.printStackTrace();
116         } catch (InterruptedException JavaDoc e) {
117             e.printStackTrace();
118         }
119     }
120 }
121
Popular Tags