ExecuteTrade.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:3k
源码类别:

Java编程

开发平台:

Java

  1. package bible.rmi.example4;
  2. import java.rmi.*;
  3. import javax.ejb.*;
  4. import javax.naming.*;
  5. import java.util.*;
  6. /**
  7.  * Implementation of the ExecuteTrade Session EJB.
  8.  * Executes a trade and notifies via client callback of execution.
  9.  */
  10. public class ExecuteTrade implements SessionBean {
  11.   /** sessionContext           */
  12.   private SessionContext sessionContext;
  13.   /**
  14.    * Method ejbCreate
  15.    *
  16.    *
  17.    */
  18.   public void ejbCreate() {}
  19.   /**
  20.    * Method ejbRemove
  21.    *
  22.    *
  23.    */
  24.   public void ejbRemove() {}
  25.   /**
  26.    * Method ejbActivate
  27.    *
  28.    *
  29.    */
  30.   public void ejbActivate() {}
  31.   /**
  32.    * Method ejbPassivate
  33.    *
  34.    *
  35.    */
  36.   public void ejbPassivate() {}
  37.   /**
  38.    * Method setSessionContext
  39.    *
  40.    *
  41.    * @param context
  42.    *
  43.    */
  44.   public void setSessionContext(SessionContext context) {
  45.     sessionContext = context;
  46.   }
  47.   /**
  48.    * Executes an order and alerts the client of the execution.
  49.    * @param order Order to be executed.
  50.    * @param alert Client to be alerted upon execution.
  51.    * @throws RemoteException
  52.    */
  53.   public void executeTrade(Order order, ExecutionAlert alert)
  54.     throws RemoteException {
  55.     // Multi-threaded this so it returns to the client right away and
  56.     // does its execution/callback work later.
  57.     DoExecution exec = new DoExecution(order, alert);
  58.     new Thread(exec).start();
  59.   }
  60.   /**
  61.    * DoExecution
  62.    */
  63.   private class DoExecution implements Runnable {
  64.     /** order           */
  65.     private Order order;
  66.     /** client           */
  67.     private ExecutionAlert client;
  68.     /**
  69.      * Constructor DoExecution
  70.      *
  71.      *
  72.      * @param ord
  73.      * @param alert
  74.      *
  75.      */
  76.     public DoExecution(Order ord, ExecutionAlert alert) {
  77.       order  = ord;
  78.       client = alert;
  79.     }
  80.     /**
  81.      * Method run
  82.      *
  83.      *
  84.      */
  85.     public void run() {
  86.       try {
  87.         Thread.currentThread().sleep(15000);  // sleep 15 seconds.
  88.         InitialContext ctx       = Environment.getInitialContext();
  89.         PriceServer    server    =
  90.           (PriceServer) ctx.lookup(PriceServer.PRICESERVERNAME);
  91.         Execution      execution = new Execution();
  92.         execution.setNumber(order.getNumber());
  93.         execution.setPrice(server.getPrice(order.getSymbol()));
  94.         // execution.setPrice(order.getPrice());
  95.         execution.setShares(order.getShares());
  96.         execution.setSymbol(order.getSymbol());
  97.         System.out.println("An order has been executed!");
  98.         System.out.println("Time: " + new Date());
  99.         System.out.println(execution + "n");
  100.         client.notifyOfExecution(execution);
  101.       } catch (Exception e) {
  102.         e.printStackTrace();
  103.       }
  104.     }
  105.   }
  106. }