priceserverimpl.java

来自「100多M的J2EE培训内容」· Java 代码 · 共 168 行

JAVA
168
字号
package bible.rmi.example4;

import java.util.*;
import javax.naming.*;
import weblogic.rmi.*;

// Implement the PriceServer remote interface.

/**
 * Class PriceServerImpl
 *
 *
 * @author
 * @version %I%, %G%
 */
public class PriceServerImpl implements PriceServer {

  // Stock price database, implemented as a Hashtable.

  /** stockTable           */
  private Hashtable stockTable = null;

  // Default constructor - create a stock price database.

  /**
   * Constructor PriceServerImpl
   *
   *
   */
  public PriceServerImpl() {

    stockTable = new Hashtable();

    Float f = new Float(0);
    stockTable.put("SUNW", f.valueOf("20"));
    stockTable.put("INTC", f.valueOf("30"));
    stockTable.put("BEAS", f.valueOf("40"));
  }

  // Return the price of the given security.

  /**
   * Method getPrice
   *
   *
   * @param symbol
   *
   * @return
   *
   */
  public float getPrice(String symbol) throws java.rmi.RemoteException {

    Float f = (Float) stockTable.get(symbol);
    System.out.println("PriceServer: Call to getPrice for symbol : "
                       + symbol);

    return f.floatValue();
  }

  // Set the price of the given security.

  /**
   * Method setPrice
   *
   *
   * @param symbol
   * @param price
   *
   */
  public void setPrice(String symbol, float price) throws java.rmi.RemoteException{

    Float f = new Float(price);
    stockTable.put(symbol, f);
    System.out.println("PriceServer: Call to  setPrice for " + symbol
                       + " to " + price);
  }

  // Return all ticker symbols in this server's database.

  /**
   * Method getSecurities
   *
   *
   * @return
   *
   */
  public String[] getSecurities() throws java.rmi.RemoteException {

    if (stockTable.size() > 0) {
      String[]    securities = new String [stockTable.size()];
      Enumeration enum       = stockTable.keys();
      int         i          = 0;
      while (enum.hasMoreElements()) {
        securities [i] = (String) enum.nextElement();

        i++;
      }

      return securities;
    }

    return null;
  }

  // Submit an order on a client's behalf, then notify the submitting
  // client when the order is executed.

  /**
   * Method enterMarketOrder
   *
   *
   * @param order
   * @param client
   *
   */
  public void enterMarketOrder(Order order, ExecutionAlert client) throws java.rmi.RemoteException{

    // The ExecuteTrade bean will return immediately and call back
    // the client when the trade has been executed.
    try {

      // Create a context with which to lookup the bean
      Hashtable ht = new Hashtable();
      ht.put(Context.INITIAL_CONTEXT_FACTORY, Environment.JNDI_FACTORY);
      ht.put(Context.PROVIDER_URL, Environment.WEBLOGIC_URL);

      Context ctx2 = new InitialContext(ht);

      // Get a reference to the bean object
      Object objref = ctx2.lookup("ExecuteTrade");

      // Get a reference to the bean's home interface
      ExecuteTradeHome home =
        (ExecuteTradeHome) javax.rmi.PortableRemoteObject.narrow(objref,
          ExecuteTradeHome.class);

      // Get a reference to the bean's remote interface
      ExecuteTradeRemote executionBean = home.create();

      // Invoke the bean's remote method to execute the trade
      executionBean.executeTrade(order, client);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * Method main
   *
   *
   * @param args
   *
   */
  public static void main(String[] args) {

    try {
      PriceServerImpl server = new PriceServerImpl();
      Context         ctx    = new InitialContext();
      ctx.bind(PRICESERVERNAME, server);
      System.out.println("PriceServer was started and bound in the registry "
                         + "to the name " + PRICESERVERNAME);
    } catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    }
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?