?? messagebean.java
字號:
//MessageBean.java
//一個接收購物訂單的消息驅動Bean,處理這個訂單同時通過e-mail的形式
//給客戶發一個感謝消息
package examples.Message;
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.*;
import javax.naming.*;
import javax.jms.*;
import java.util.*;
import java.text.*;
import javax.mail.*;
import javax.activation.*;
import javax.mail.internet.*;
//消息驅動Bean必須實現兩個接口MessageDrivenBean和MessageListener
public class MessageBean implements MessageDrivenBean,
MessageListener {
private transient MessageDrivenContext context = null;
//一個不帶參的構造函數
public MessageBean() {}
//在對象創建的過程中將被容器調用
public void setMessageDrivenContext(MessageDrivenContext context)
{
this.context = context;
}
// onMessage函數方法接收消息參數,將其強制轉型為合適的消息類型
//同時打印出消息的內容。同時一個mail note將被發送給消息發送者
public void onMessage(javax.jms.Message msg) {
try {
if (msg instanceof MapMessage) {
MapMessage map = (MapMessage) msg;
System.out.println("Order received: ");
System.out.println ("Order ID: " + map.getString("OrderID") + " Item ID: "
+ map.getInt("ItemID") + " Quanity: " + map.getInt("Quantity")
+ " Unit Price: " + map.getDouble("UnitPrice"));
sendNote (map.getString("emailID"));
}
else {
System.out.println ("wrong message type");
}
} catch (Throwable te) {
te.printStackTrace();
}
}
//發送一個e-mail通知給由recipient參數確定的e-mail賬號
private void sendNote(String recipient) {
try {
//得到名字上下文
Context initial = new InitialContext();
// 查詢mail 服務器的會話
javax.mail.Session session = (javax.mail.Session) initial.lookup("java:comp/env/MailSession");
//創建一個新的mail對象
javax.mail.Message msg = new MimeMessage(session);
//設置mail的屬性
msg.setFrom();
msg.setRecipients(javax.mail.Message.RecipientType.TO, InternetAddress.parse(recipient, false));
msg.setSubject("Order Confirmation");
DateFormat dateFormatter
= DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT);
Date timeStamp = new Date();
String messageText = "Thank you for your order." + '\n'
+ "We received your order on " + dateFormatter.format(timeStamp) + ".";
msg.setText(messageText);
msg.setSentDate(timeStamp);
//發送mail消息
Transport.send(msg);
} catch(Exception e) {
throw new EJBException(e.getMessage());
}
}
public void ejbCreate() {}
public void ejbRemove() {}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -