📄 alertqueue.java
字号:
/*
* @author Elangovan
* @version 1.0
*
* Development Environment : Oracle9i JDeveloper
* Name of the Application : AlertQueue.java
*
* Creation/Modification History :
*
* Elangovan 19-Aug-2003 Created
*
*/
package oracle.otnsamples.ibfbs.admin.ejb;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.naming.Context;
import javax.naming.InitialContext;
/**
* This Message Driven Bean provides asynchronous processing for stock quote
* alerts. This bean is invoked when an alert message in posted to the Alert Queue.
* It extracts the details from the message and sends an alert. Alert is sent to
* the user as either an email or mobile mail based on the their preference.
*
* @see MailServiceBean.java
*
*/
public class AlertQueue
implements MessageDrivenBean, MessageListener {
private transient MessageDrivenContext messageContext;
// Handle to MailService Home
private MailServiceHome mailServiceHome = null;
/**
* Standard callback method, invoked by Container when this Message Driven Bean
* is created. Initializes MailService.
*/
public void ejbCreate() {
try {
// Initialize context
Context ctx = new InitialContext();
// Initialize Mail Service
mailServiceHome = (MailServiceHome)ctx.lookup("MailService");
} catch(Exception ex) {
System.err.println(" AlertQueue.ejbCreate: Error initializing MailService "+
ex.toString());
}
}
/**
* This method is invoked by the container when a message is enqueued in Alert
* Queue. Extracts the alert details from the message and sends the alert
* based on the user preference.
*
* @param message JMS message with the alert details
*/
public void onMessage(Message message) {
try {
// Get an instance of MailService
MailService mailService = mailServiceHome.create();
// Based on Alert mode, send alert in either TEXT or HTML format
if(message.getStringProperty("alertMode").equals("M")) {
mailService.sendMail(message.getStringProperty("mobile"),
"alerts@fbs.com", "Stock Price Alert",
getTextMsg(message.getStringProperty("accountNumber"),
message.getStringProperty("name"),
message.getStringProperty("symbol"),
message.getStringProperty("minlimit"),
message.getStringProperty("maxlimit"),
message.getFloatProperty("rate")));
} else {
mailService.sendMail(message.getStringProperty("email"),
"alerts@fbs.com", "Stock Price Alert",
getHTMLMsg(message.getStringProperty("accountNumber"),
message.getStringProperty("name"),
message.getStringProperty("symbol"),
message.getStringProperty("minlimit"),
message.getStringProperty("maxlimit"),
message.getFloatProperty("rate")));
}
} catch(Exception ex) {
System.out.println(" AlertQueue.onMessage(): Error sending Alert : "+ex.toString());
}
}
/**
* Constructs and returns an alert message in HTML format.
*
* @param accountNumber Account number
* @param name Company Name
* @param symbol Stock Symbol
* @param minlimit Min limit
* @param maxlimit Max limit
* @param rate Current stock rate
* @return HTML formatted alert message
*/
private String getHTMLMsg(String accountNumber, String name, String symbol,
String minlimit, String maxlimit, float rate) {
StringBuffer sb = new StringBuffer();
sb.append("<br><br>").append(" Hi,<br><br>")
.append("<h4><u>Alert Details</u></h4>").append("<table border='1'>")
.append(" <tr><th> Account Number</th><td>").append(accountNumber)
.append("</td></tr>")
.append(" <tr><th> Name</th><td>" + name + "</td></tr>")
.append(" <tr><th> Symbol</th><td>" + symbol + "</td></tr>")
.append(" <tr><th> Min Limit</th><td>" + minlimit + "</td></tr>")
.append(" <tr><th> Max Limit</th><td>" + maxlimit + "</td></tr>")
.append(" <tr><th> Current Stock Price</th><th>" + rate + "</th></tr>")
.append("</table><br>")
.append("<font color='##990000' size='3'><b> You have a Stock Alert !!")
.append("</b></font><br><br>")
.append("<br><br>Happy Trading !! <br> FBS Team.");
return sb.toString();
}
/**
* Constructs and returns an alert message in Text format.
*
* @param accountNumber Account number
* @param name Company Name
* @param symbol Stock Symbol
* @param minlimit Min limit
* @param maxlimit Max limit
* @param rate Current stock rate
* @return Text formatted alert message
*/
private String getTextMsg(String accountNumber, String name, String symbol,
String minlimit, String maxlimit, float rate) {
StringBuffer sb = new StringBuffer();
sb.append("\nAlert Details \n\n")
.append("Account Number" + accountNumber + "\n")
.append("Name :" + name + "\n").append("Symbol :" + symbol + "\n")
.append("Min Limit :" + minlimit + "\n")
.append("Max Limit :" + maxlimit + "\n")
.append("Current Stock Price :" + rate + "\n");
return sb.toString();
}
// Standard callback
public void setMessageDrivenContext(MessageDrivenContext context) {
messageContext = context;
}
public void ejbRemove() {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -