<!-- 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>