⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alertqueue.java

📁 Oracle的J2EE Sample
💻 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 + -