<%= pagetitle %>

<%@ page import=" javax.naming.*, javax.ejb.*, java.rmi.RemoteException, java.rmi.Remote, java.util.*, examples.ejb.basic.beanManaged.* "%> <%! 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()); } %> <% double amount = 100; double balance = 3000; try { // Contact the AccountBean container (the "AccountHome") through JNDI. Context ctx = getInitialContext(); AccountHome home = (AccountHome) ctx.lookup("beanManaged.AccountHome"); %>

Looking up account <%= accountId %> ... <% Account ac = null; try { ac = (Account) home.findByPrimaryKey(accountId); } catch (Exception ee) { out.println("
Did not find "+ accountId); } if (ac == null) { out.print("
Account " + accountId + " being created; opening balance is $" + balance); ac = home.create(accountId, balance); } else { out.print("
Account " + accountId + " found; balance is $" + ac.balance()); } %>

Part A:

Deposit and attempt to withdraw more than the current account balance. An application-specific exception should be thrown:-

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

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

PartB:

Withdraw an amount greater than current balance. Expecting an exception...

<% 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("

" + getStackTraceAsString(pe) + "
"); } %>

Part C

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.

<% 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)); %>
Created account: <%= id %> with balance: $ <%= balance %> <% } // end of creating accounts for loop if (v.size() == numAccounts) { out.print("

Success: " + numAccounts + " accounts successfully created"); } else { out.print("

Error: Only " + v.size() + " accounts were created successfully"); } %> <% double balanceGreaterThan = 700; %>

Querying for accounts with a balance greater than <%= balanceGreaterThan %> <% Enumeration e = home.findBigAccounts(balanceGreaterThan); if (e != null) { while (e.hasMoreElements()) { Account bigAccount= (Account) e.nextElement(); %> <% // Thread.sleep(1000); } } %>
<%= bigAccount.getPrimaryKey() %> <%= bigAccount.balance() %>

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("
Removed account: " +id); } // Catch exceptions } catch (ProcessingErrorException pe) { out.print("

Unexpected Processing Error: " + pe + "

"+getStackTraceAsString(pe)+"
"); } catch (Exception e) { out.print("

:::::::::::::: Unexpected Error :::::::::::::::::"); out.print("

"+getStackTraceAsString(e)+"
"); } finally { %>

Completed EJB operations at <%= new Date() %>


<% } %>

Copyright © 1999-2000 by BEA Systems, Inc. All Rights Reserved.