statelesssessionbean.jsp

来自「weblogic应用全实例」· JSP 代码 · 共 188 行

JSP
188
字号

<!-- 这里我们使用 ("PAGETITLE") 变量来设置标题-->
<html>
<head>
<title>
<%= pagetitle %>
</title>
</head>

<body bgcolor=#FFFFFF>

<font face="Helvetica">

<h2>
<font color=#DB1260>
<%= pagetitle %>
</font>
</h2>

<!-- 使用"import" .  需要javax.naming.* 。
     实例samples.j2ee.ejb.basic.statelessSession.* 
     

     参看WLE Stateless Session Bean Sample文档
      -->

<%@ page import="
    javax.naming.*,
    samples.j2ee.ejb.basic.statelessSession.*
"%>

<%!
//声明
  static final String pagetitle = "WLEC JSP Stateless Session Bean Sample";
  static final String customerName  = "Erin";    // Default name for the customer
  static final int maxTransaction = 5;           // no. transactions to do


  // getInitialContext()方法返回一个InitialContext, 页面用它来
  //   查找Trader主接口

  public Context getInitialContext() throws Exception {

    Hashtable env = new Hashtable();

    // 指定连接池的名字
    env.put(Context.PROVIDER_URL, "wlepool://StatelessSessionPool");

    // 访问WLE域和全局名称服务构造器名字
    env.put(Context.INITIAL_CONTEXT_FACTORY,
             "com.beasys.jndi.WLEInitialContextFactory");

    return new InitialContext(env);
  }

  String getStackTraceAsString(Exception e)
  {
    // 把异常转化成字符串
    ByteArrayOutputStream ostr = new ByteArrayOutputStream();
    e.printStackTrace(new PrintWriter(ostr));
    return(ostr.toString());
  }
%>


<%
  Context   ctx           = null;     //  JNDI 上下文
  Object    objref        = null;     // 对象引用

  String    stockName       = null;   // 股票名
  int       numberOfShares  = 0;      // 股票编号
  double    cashBalance     = 0.0;    // 结算

  TraderHome  brokerage   = null;     // 主接口
  Trader      trader      = null;     // 远程对象
  TradeResult tradeResult = null;     // 交易结果
%>


<p><b>获取上下文</b>

<%
  try {
      // 创建上下文
      ctx = getInitialContext();

      if ( ctx == null ){
	    out.print("<p>Initial context is null!");
      }
%>


<p><b>查找主接口并创建Trader对象</b>


<%
      // 通过JNDI查找EJB;
      objref = ctx.lookup("statelessSession.TraderHome");


      /* 创建trader对象
       */
      brokerage = (TraderHome) objref;

      // 在WLE服务器中创建
      trader = brokerage.create();
%>


<p><b>买卖一些股票</b>

<ul>


<%

      for (int i = 1 ; i <= maxTransaction; i++) {
        out.print("<p><li>开始交易 " + i + " 名字 " +
                            customerName);

        /* 买
         * 股票代号必须在描述符环境变量中定义
         */

        stockName      = "BEAS";
        numberOfShares = 100 * i;
        out.print("<br>买 " + numberOfShares + " 股: " + stockName);

       
        tradeResult = trader.buy(customerName, stockName, numberOfShares);
        out.print("...完成 " + tradeResult.numberTraded + " 以 $" +
                           tradeResult.priceSoldAt);

        // 保存交易状态
        cashBalance = cashBalance - (tradeResult.numberTraded *
                                      tradeResult.priceSoldAt);

        // 卖
        stockName      = "INTL";
        numberOfShares = 100 * (i+1);
        out.print("<br>卖 " + numberOfShares + " 股: " + stockName);

        // WLE服务器中的TraderBean EJB执行sell()方法
        tradeResult = trader.sell(customerName, stockName, numberOfShares);
        out.print("...卖掉 " + tradeResult.numberTraded + " 以 $" +
                           tradeResult.priceSoldAt);

        // 保存交易状态
        cashBalance = cashBalance + (tradeResult.numberTraded *
                                      tradeResult.priceSoldAt);

        // 打印结果
        out.print("<br>Change in Cash Account: $" + cashBalance);
        out.print("<br>End of Transaction " + i + "\n");
      }
%>


</ul>

<p><b>清除Trader对象</b>


<%
      // 从WLE服务器中清除TraderBean EJB。
      trader.remove();
  }
  catch (ProcessingErrorException pe) {
  ///异常处理
      out.print("<p>Processing Error: " + pe);
      out.print("<p>" + getStackTraceAsString(pe));
  }
  catch (Exception e) {
  //其他异常
      out.print("<p>:::::::::::::: Error :::::::::::::::::");
      out.print("<p> Stack Trace:" + getStackTraceAsString(e));
  }
%>


<p><b>Trader 清除完毕实例结束!</b>

<p>

</font>
</body>
</html>

⌨️ 快捷键说明

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