Weblgic中介绍的一个jsp调用ejb的实例
diego lynn
<!-- 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>?