メールプログラムは、メッセージをメールサーバ間で送受信します。 この例では、メールサーバとしてJMSを使用し、メールメッセージはTextMessageです。メールメッセージの送信者および受信者は、メッセージヘッダの文字列プロパティです。Mailクラスのソースコードは、次のとおりです。
メッセージを送信するには、プログラムでは次の2つのコマンドラインパラメータが必要です。package mail; import java.util.Date; import javax.naming.InitialContext; import javax.jms.Queue; import javax.jms.Session; import javax.jms.Message; import javax.jms.TextMessage; import javax.jms.QueueSender; import javax.jms.QueueSession; import javax.jms.QueueReceiver; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; /** This class ilustrates a very simple mail application, which can read and send mail messages. */ public class Mail { public static void main(String[] args) throws Exception { | // create sender and receiver | InitialContext ctx = new InitialContext(); | QueueConnectionFactory factory = (QueueConnectionFactory) | ctx.lookup("queue/connectionFactory"); | Queue queue = (Queue) ctx.lookup("queue/queue0"); | QueueConnection conn = factory.createQueueConnection(); | QueueSession session = conn.createQueueSession(false, | Session.AUTO_ACKNOWLEDGE); | conn.start(); | | // first arg is recipient, second arg is message | if (args.length == 2) | { | | QueueSender sender = session.createSender(queue); | | TextMessage msg = session.createTextMessage(args[1]); | | msg.setStringProperty("sender", System.getProperty("user.name")); | | msg.setStringProperty("to", args[0]); | | msg.setStringProperty("date", new Date().toString()); | | sender.send(msg); | } | else | { | | String selector = "to = '" + System.getProperty("user.name") + "'"; | | QueueReceiver receiver = session.createReceiver(queue, selector); | | TextMessage msg = (TextMessage) receiver.receive(500); | | if (msg != null) | | { | | | System.out.println("From: " + msg.getStringProperty("sender")); | | | System.out.println("To: " + msg.getStringProperty("to")); | | | System.out.println("Date: " + msg.getStringProperty("date")); | | | System.out.println("\n" + msg.getText()); | | } | | else | | { | | | System.out.println("no messages"); | | } | } } }引数なしで実行すると、プログラムでは現在のユーザがメールメッセージを受信すると想定されます。他のユーザからのメッセージを拒否するため、プログラムにより次のセレクタが設定されます。
- 受信者 - メッセージの受信者のユーザ名です。
- メッセージ - メールメッセージである簡単なテキスト文字列です。
"to = '" + System.getProperty("user.name") + "'";このメッセージセレクタと一致するメッセージがキューに存在する場合、このキューからメッセージを受信して出力します。現在のユーザに対するメッセージがキューにない場合、「no messages」と出力します。
Copyright © 2000-2003, Novell, Inc.All rights reserved. |