[J2EE/EJB/服务器]bea weblgic中介绍的一个jsp调用ejb的例子
是从网上找的 具体的俺也没用过!!
<%= pagetitle %>
<%= 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;
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");
%>
Looking up account <%= accountId %> ...
<%
Account ac = null;
try {
ac = (Account) home.findByPrimaryKey(accountKey);
}
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();
%>
| <%= bigAccount.getPrimaryKey() %> |
<%= bigAccount.balance() %> |
<%
// Thread.sleep(1000);
}
}
%>
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.