• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

bea weblgic中介绍的一个jsp调用ejb的好例子,相当详细。

发布: 2007-7-01 18:47 | 作者: admin | 来源: | 查看: 15次 | 进入软件测试论坛讨论

领测软件测试网 <!-- Copyright (c) 1999-2000 by BEA Systems, Inc. All Rights Reserved.-->

<!-- Here we use a Java string ("PAGETITLE") to set
     the same phrase as the title and as a head.-->
<html>
<head>
<title>
<%= pagetitle %>
</title>
</head>

<body bgcolor=#FFFFFF>

<font face="Helvetica">

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

<!-- Using the "import" feature -->

<%@ page import="
    javax.naming.*,
    javax.ejb.*,
    java.rmi.RemoteException,
    java.rmi.Remote,
    java.util.*,
    examples.ejb.basic.beanManaged.*
"%>

<!-- Here, we declare a class method -->

<%!
  String pagetitle = "JSP example using EJBean-managed persistence";
  String url       = "t3://localhost:7001";
  String accountId = "10020";

  // Declaring a Java class
  public Context getInitialContext() throws Exception {
    Properties p = new Properties();
    p.put(Context.INITIAL_CONTEXT_FACTORY,
          "weblogic.jndi.WLInitialContextFactory");
    p.put(Context.PROVIDER_URL, url);
    return new InitialContext(p);
  }
    
  String getStackTraceAsString(Exception e)
  {
    // Dump the stack trace to a buffered stream, then send it@#s contents
    // to the JSPWriter.
    ByteArrayOutputStream ostr = new ByteArrayOutputStream();
    e.printStackTrace(new PrintWriter(ostr));
    return(ostr.toString());
  }
%>

<!-- Note that the following Java code will be inserted into the body
of the servlet -->

<%
  double amount  = 100;
  double balance = 3000;

  AccountPK accountKey = new AccountPK();
  accountKey.accountId = accountId;
  try {
    // Contact the AccountBean container (the "AccountHome") through JNDI.

    Context ctx = getInitialContext();
    AccountHome home = (AccountHome) ctx.lookup("beanManaged.AccountHome");

%>

<p>
<b>Looking up account <%= accountId %> ...</b>

<%
    Account ac = null;
    try {
      ac = (Account) home.findByPrimaryKey(accountKey);
    }
    catch (Exception ee) {
        out.println("<br>Did not find "+ accountId);
    }

    if (ac == null) {
      out.print("<br>Account " + accountId +
                " being created; opening balance is $" + balance);
      ac = home.create(accountId, balance);      
    }
    else {
      out.print("<br>Account " + accountId +
                " found; balance is $" + ac.balance());
    }
%>

<h2>Part A:</h2>
Deposit and attempt to withdraw more than the current
account balance. An application-specific exception should be thrown:-
<p>

Current Balance: $ <%= ac.balance() %> <br>
Depositing: $ <%= amount %>
<p>

<%
    // Deposit the amount into the account
    balance = ac.deposit(amount);
%>

New balance: $ <%= balance %>

<p>
<h2>PartB:</h2>
Withdraw an amount greater than
current balance. Expecting an exception...
<p>

<%
    amount = balance + 10;
    try {
      balance = ac.withdraw(amount);
      out.print("Error: An exception should have been thrown.");
    }
    catch (ProcessingErrorException pe) {
      out.print("Received expected Processing Error:" + pe);
      out.print("<pre>" + getStackTraceAsString(pe) + "</pre>");
    }
%>      

<h2>Part C</h2>
Create some new accounts, with different initial balances.
Find all the accounts with a balance greater than a specific value.
When finished, the new accounts are removed.
<p>

<%
    int numAccounts = 5;
    long now = System.currentTimeMillis();
    Vector v = new Vector();
    
    for (int i = 0; i < numAccounts; i++) {
      String id = "" + now + i;     // create unique account  id
      balance = i*100;              // initial balance
      v.addElement(home.create(id, balance));
%>

<br>Created account: <%= id %> with  balance: $ <%= balance %>

<%
    } // end of creating accounts for loop

    if (v.size() == numAccounts) {
      out.print("<p>Success: " + numAccounts + " accounts successfully created");
    }
    else {
      out.print("<p>Error: Only " + v.size() +
                " accounts were created successfully");
    }
    
%>

<%
    double balanceGreaterThan = 700;
%>

<p>Querying for accounts with a balance greater than <%= balanceGreaterThan %>
<table><tr><th Account ID><th Balance></tr>

<%
    Enumeration e = home.findBigAccounts(balanceGreaterThan);
    if (e != null) {
      while (e.hasMoreElements()) {
        Account bigAccount= (Account) e.nextElement();
%>
<tr>
    <td><%= bigAccount.getPrimaryKey() %></td>
    <td><%= bigAccount.balance() %></td>
</tr>
<%
        // Thread.sleep(1000);
      }
    }
%>
</table>

<p>Now Removing the accounts we just created...

<%
    for (int i = 0; i < numAccounts; i++) {
      String id = String.valueOf(now) + String.valueOf(i);
      ((Account)(v.elementAt(i))).remove();
      out.print("<br>Removed account: " +id);
    }

  // Catch exceptions
  }
  catch (ProcessingErrorException pe) {
    out.print("<p>Unexpected Processing Error: " + pe +
              "<pre>"+getStackTraceAsString(pe)+"</pre>");
  }
  catch (Exception e) {
    out.print("<p>:::::::::::::: Unexpected Error :::::::::::::::::");
    out.print("<pre>"+getStackTraceAsString(e)+"</pre>");
  }
  finally {
%>

<p>Completed EJB operations at <%= new Date() %>
<p><hr width=80%>

<%
  }
%>

<p>
<font size=-1>
Copyright © 1999-2000 by BEA Systems, Inc. All Rights Reserved.
</font>

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


文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网