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

Java编程

开发平台:

Java

  1. package bible.rmi.example4;
  2. import java.util.*;
  3. import javax.naming.*;
  4. import weblogic.rmi.*;
  5. /**
  6.  * Periodically enters orders to the remote server and remotely
  7.  * receive updates of executions.
  8.  */
  9. public class TradingClient extends TimerTask
  10.   implements Runnable, ExecutionAlert {
  11.   /** orderNumber           */
  12.   private static int orderNumber = 0;
  13.   /**
  14.    * Method notifyOfExecution
  15.    *
  16.    *
  17.    * @param exec
  18.    *
  19.    */
  20.   public void notifyOfExecution(Execution exec) throws java.rmi.RemoteException{
  21.     System.out.println("An order has been executed!");
  22.     System.out.println("Time: " + new Date());
  23.     System.out.println(exec + "n");
  24.   }
  25.   /**
  26.    * Places a stock order with the remote server.
  27.    */
  28.   public void run() {
  29.     System.out.println("Client now placing an order... ");
  30.     System.out.println(" Time: " + new Date() + "n");
  31.     InitialContext ctx = null;
  32.     try {
  33.       // Get the remote stub for the Price server via JNDI.
  34.       ctx = Environment.getInitialContext();
  35.       PriceServer server =
  36.         (PriceServer) ctx.lookup(PriceServer.PRICESERVERNAME);
  37.       // Get the list of securities managed by the server.
  38.       String securities [] = server.getSecurities();
  39.       // Create a new Order instance
  40.       Order  order = new Order();
  41.       Random rand  = new Random();
  42.       // Increment the order number
  43.       order.setNumber(++orderNumber);
  44.       // Choose one of the available securities at random
  45.       order.setSymbol(securities [rand.nextInt(securities.length)]);
  46.       // Choose a random number of shares
  47.       order.setShares(100 * (rand.nextInt(9) + 1));
  48.       // Enter the order via a remote call to the server.
  49.       // Pass the reference to ourselves so the server can call back.
  50.       server.enterMarketOrder(order, this);
  51.     } catch (Exception e) {
  52.       e.printStackTrace();
  53.     } finally {
  54.       try {
  55.         ctx.close();
  56.       } catch (Exception e) {
  57.         e.printStackTrace();
  58.       }
  59.     }
  60.   }
  61.   /**
  62.    * Instantiates a client and puts it on a repeating timer.
  63.    * @param args
  64.    */
  65.   public static void main(String[] args) {
  66.     try {
  67.       Timer         t      = new Timer();
  68.       TradingClient client = new TradingClient();
  69.       Context       ctx    = Environment.getInitialContext();
  70.       ctx.bind("TradingClient", client);
  71.       System.out
  72.         .println("TradingClient was started and bound in the registry "
  73.                  + "to the name TradingClient");
  74.       t.schedule(client, 5000, 45000);
  75.     } catch (Exception e) {
  76.       e.printStackTrace();
  77.       System.exit(1);
  78.     }
  79.   }
  80. }