KickJava   Java API By Example, From Geeks To Geeks.

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


1 /**
2  * BadgeReader
3  */

4 package it.bigatti.c6;
5
6 import java.io.BufferedReader JavaDoc;
7 import java.io.IOException JavaDoc;
8 import java.io.InputStreamReader JavaDoc;
9
10 import javax.jms.DeliveryMode JavaDoc;
11 import javax.jms.JMSException JavaDoc;
12 import javax.jms.Message JavaDoc;
13 import javax.jms.MessageListener JavaDoc;
14 import javax.jms.QueueConnection JavaDoc;
15 import javax.jms.QueueConnectionFactory JavaDoc;
16 import javax.jms.QueueSender JavaDoc;
17 import javax.jms.QueueSession JavaDoc;
18 import javax.jms.Session JavaDoc;
19 import javax.jms.TextMessage JavaDoc;
20
21 import org.mr.api.jms.MantaQueueConnectionFactory;
22
23 /**
24  * Legge i codici di badge dalla tastiera e li invia sulla
25  * coda di uscita al server, che comunicherˆ in risposta la
26  * validitˆ o meno dello stesso.
27  *
28  * @author max@bigatti.it
29  * Publications of same author on the italian magazine ioProgrammo.
30  * Forums at: http://forum.ioprogrammo.it
31  */

32 public class BadgeReader {
33     private static final int MESSAGE_TTL = 100000;
34     
35     private QueueConnection JavaDoc con = null;
36     private QueueSession JavaDoc sendSession = null;
37     private QueueSession JavaDoc receiveSession = null;
38     private QueueSender JavaDoc sender = null;
39     
40     /** crea l'oggetto di lettura inizializzando sessioni e code
41      * @throws JMSException
42      * @throws IOException*/

43     public BadgeReader() throws JMSException JavaDoc, IOException JavaDoc {
44         QueueConnectionFactory JavaDoc conFactory =
45             (QueueConnectionFactory JavaDoc) new MantaQueueConnectionFactory();
46         
47         //Crea una connessione alla coda
48
con = conFactory.createQueueConnection();
49         
50         //Ottiene le sessioni di invio e ricezione
51
sendSession = (QueueSession JavaDoc)
52         con.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
53         receiveSession = (QueueSession JavaDoc)
54         con.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
55         
56         //Crea la coda di invio
57
javax.jms.Queue JavaDoc sendQueue = sendSession.createQueue(
58                 C6Constants.SEND_QUEUE_NAME);
59         sender = sendSession.createSender(sendQueue);
60         
61         //Crea la coda di ricezione
62
javax.jms.Queue JavaDoc receiveQueue = receiveSession.createQueue(
63                 C6Constants.RECEIVE_QUEUE_NAME);
64         javax.jms.QueueReceiver JavaDoc qReceiver =
65             receiveSession.createReceiver(receiveQueue);
66         
67         //Aggiunge l'ascoltatore di eventi per i messaggi in arrivo
68
qReceiver.setMessageListener( new MessageListener JavaDoc() {
69             public void onMessage(Message JavaDoc msg) {
70                 TextMessage JavaDoc tmsg = (TextMessage JavaDoc)msg;
71                 String JavaDoc line;
72                 try {
73                     line = tmsg.getText();
74                     System.out.println( "[receive] " + line );
75                 } catch (JMSException JavaDoc e) {
76                     e.printStackTrace();
77                 }
78             }
79         });
80         
81         leggiEScrivi();
82     }
83     
84     /** ciclo di lettura badge ed invio al server */
85     void leggiEScrivi() throws JMSException JavaDoc, IOException JavaDoc {
86         BufferedReader JavaDoc stdin =
87             new BufferedReader JavaDoc(
88                     new InputStreamReader JavaDoc( System.in ) );
89         
90         con.start();
91         System.out.println("Pronti");
92         
93         while( true ) {
94             System.out.print("[input]> ");
95             String JavaDoc line = stdin.readLine();
96             verificaBadge( line );
97         }
98     }
99     
100     /** invia il badge al server per chiedere autorizzazione */
101     void verificaBadge( final String JavaDoc codiceBadge ) throws JMSException JavaDoc {
102         Thread JavaDoc th = new Thread JavaDoc( new Runnable JavaDoc() {
103             public void run() {
104                 TextMessage JavaDoc msg;
105                 try {
106                     System.out.println("verificaBadge() " + codiceBadge );
107                     msg = sendSession.createTextMessage();
108                     msg.setText( "BADGE: " + codiceBadge );
109                     
110                     sender.send( msg,
111                             DeliveryMode.NON_PERSISTENT,
112                             Message.DEFAULT_PRIORITY,
113                             MESSAGE_TTL);
114                     
115                     System.out.println("[send] " + msg.getText());
116                 } catch (JMSException JavaDoc e) {
117                     e.printStackTrace();
118                 }
119             }
120         } );
121         th.start();
122     }
123     
124     public static void main(String JavaDoc[] args) {
125         try {
126             new BadgeReader();
127         } catch (JMSException JavaDoc e) {
128             e.printStackTrace();
129         } catch (IOException JavaDoc e) {
130             e.printStackTrace();
131         }
132     }
133 }
134
Popular Tags