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

Java编程

开发平台:

Java

  1. package bible.rmi.example2;
  2. import java.util.*;
  3. import javax.naming.*;
  4. import weblogic.rmi.*;
  5. import java.rmi.RemoteException;
  6. /**
  7.  * PriceServerImpl implements the PriceServer remote interface, providing
  8.  * prices on securities for remote clients.
  9.  */
  10. public class PriceServerImpl implements PriceServer {
  11.   // Stock price database, implemented as a Hashtable.
  12.   /** stockTable           */
  13.   private Hashtable stockTable = null;
  14.   /**
  15.    * Creates the stock price 'database'.
  16.    */
  17.   public PriceServerImpl() {
  18.     stockTable = new Hashtable();
  19.     Float f = new Float(0);
  20.     stockTable.put("SUNW", f.valueOf("20"));
  21.     stockTable.put("INTC", f.valueOf("30"));
  22.     stockTable.put("BEAS", f.valueOf("40"));
  23.   }
  24.   /**
  25.    * Returns the price of the given security.
  26.    * @param symbol
  27.    */
  28.   public float getPrice(String symbol) throws java.rmi.RemoteException{
  29.     Float f = (Float) stockTable.get(symbol);
  30.     System.out.println("PriceServer: Call to getPrice for symbol : "
  31.                        + symbol);
  32.     return f.floatValue();
  33.   }
  34.   /**
  35.    * Sets the price for the given security.
  36.    * @param symbol
  37.    * @param price
  38.    */
  39.   public void setPrice(String symbol, float price) throws java.rmi.RemoteException{
  40.     Float f = new Float(price);
  41.     stockTable.put(symbol, f);
  42.     System.out.println("PriceServer: Call to setPrice for " + symbol + " to "
  43.                        + price);
  44.   }
  45.   /**
  46.    * Returns all ticker symbols in this server's database.
  47.    */
  48.   public String[] getSecurities() throws java.rmi.RemoteException{
  49.     if (stockTable.size() > 0) {
  50.       String[]    securities = new String [stockTable.size()];
  51.       Enumeration enum       = stockTable.keys();
  52.       int         i          = 0;
  53.       while (enum.hasMoreElements()) {
  54.         securities [i] = (String) enum.nextElement();
  55.         i++;
  56.       }
  57.       return securities;
  58.     }
  59.     return null;
  60.   }
  61.   /**
  62.    * Instanciates and binds a PriceServer.
  63.    * @param args
  64.    */
  65.   public static void main(String[] args) {
  66.     try {
  67.       PriceServerImpl server = new PriceServerImpl();
  68.       Context         ctx    = new InitialContext();
  69.       ctx.bind(PRICESERVERNAME, server);
  70.       System.out.println("PriceServer was started and bound in the registry "
  71.                          + "to the name " + PRICESERVERNAME);
  72.     } catch (Exception e) {
  73.       e.printStackTrace();
  74.       System.exit(1);
  75.     }
  76.   }
  77. }