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

📄 traderbean.java

📁 weblogic应用全实例
💻 JAVA
字号:
//定义本类在包examples.ejb.basic.statelessSession中
package examples.ejb.basic.statelessSession;
//本类用到的其他类。javax.ejb.*是开发EJB应用需要的类库。javax.naming.*是实现JNDI服务需要的类库。
import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 * TraderBean 是一个无状态EJB,它演示了如何:
 * 在会话过程中不保持用户的状态
 * 用户定义异常
 */
//这个类是会话Bean,因此必须实现接口 SessionBean
public class TraderBean implements SessionBean {
//设置是否打印控制台
  private static final boolean VERBOSE = true;
  //声明会话上下文变量
  private SessionContext ctx;
  //设计交易限制变量
  private int tradeLimit;

  // 使用日志记录
  private void log(String s) {
    if (VERBOSE) System.out.println(s);
  } 
  
  /**
   * 这是本类必须实现的方法,在本例中没有用到
   *
   */
  public void ejbActivate() {
    log("ejbActivate called");
  }

  /**
   * 这是本类必须实现的方法,在本例中没有用到
   *
   */
  public void ejbRemove() {
    log("ejbRemove called");
  }

  /**
   * 这是本类必须实现的方法,在本例中没有用到
   *
   */
  public void ejbPassivate() {
    log("ejbPassivate called");
  }

  /**
   * 设置会话上下文变量
   *
   * @参数 ctx               SessionContext Context for session
   */
  public void setSessionContext(SessionContext ctx) {
    log("setSessionContext called");
    this.ctx = ctx;
  }

 /**
   * 这个方法与"TraderHome.java"中定义的主接口中的"create"方法相对应
   * 两个方法的参数相同。当客户端调用主接口的"TraderHome.create()"方法时,
   * 容器会分配一个EJBean实例,并调用它的"ejbCreate()"方法。
   *
   * @异常	javax.ejb.CreateException 创建EJBean出错时抛出的异常
   * @参看       examples.ejb.basic.statefulSession.Trader
   */
  public void ejbCreate () throws CreateException {
    log("ejbCreate called");

    try {
    	//初始化JNDI名称服务上下文
      InitialContext ic = new InitialContext();
	//从环境变量上下文中查找交易限制参数值	
      Integer tl = (Integer) ic.lookup("java:/comp/env/tradeLimit");
    
      tradeLimit = tl.intValue();
    } catch (NamingException ne) {
      throw new CreateException("Failed to find environment value "+ne);
    }
  }

  /**
   * 购买指定用户和股票类别、数量的股票。
   *
   * @参数 stockSymbol   股票代码
   * @参数 shares        购买股票的数量
   * @返回               TradeResult 交易结果对象
   */
  public TradeResult buy(String stockSymbol, int shares) {

    if (shares > tradeLimit) {
      log("Attempt to buy "+shares+" is greater than limit of "+tradeLimit);
      shares = tradeLimit;
    }

    log("Buying "+shares+" shares of "+stockSymbol);
//返回交易结果对象
    return new TradeResult(shares, stockSymbol);
  }

   /**
   * 出售指定用户和股票类别、数量的股票。
   *
   * @参数 stockSymbol   股票代码
   * @参数 shares        出售股票的数量
   * @返回               TradeResult Trade Result
   */
  public TradeResult sell(String stockSymbol, int shares) {

    if (shares > tradeLimit) {
      log("Attempt to sell "+shares+" is greater than limit of "+tradeLimit);
      shares = tradeLimit;
    }

    log("Selling "+shares+" shares of "+stockSymbol);
//返回交易结果对象
    return new TradeResult(shares, stockSymbol);
  }

}








⌨️ 快捷键说明

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