bea weblgic中介绍的一个jsp调用ejb的好例子,相当详细。
<!-- 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>
下一篇:j2ee技术简单介绍
↓相关文章:
- · j2ee技术简单介绍
- · WebSphere快速入门(16)
- · WebSphere快速入门(18)
- · Weblogic6.0上Connection Pool、DataSource的创建与使用
- · 经过几天的折腾,终于在win2000下把mysql和jsp配置好了,下面是我总结的一些经验!
- · Tomcat中文手册(2)_转
- · Sorry,我刚找到的:配置J2EE支持Mysql (转)
- · 分布式对话服务器的管理(1)
- · 分布式对话服务器的管理(3)
- · 分布式对话服务器的管理(5)
- · J2EE配置指南(1)
- · J2EE配置指南(2)
- · XML和J2EE的组合技术 (转)
- · Weblogic6.0部署和配置WEB应用程序(5)
- · 简析J2EE应用程序数据库类设计模式
- · 转贴:利用EJB创建CRM系统
- · 说明
- · 创建部署的xml文件和bat文件
- · 建立ejb各个接口和bean的大致框架的文件
- · to: jeru, 我对nucleus不清楚, 在此谈谈对ejb的感受
- · EJB核心技术及其应用(再续)
- · Weblogic6.0安装及配置(1)
- · Weblogic6.0 SP1的安装及配置
- · TOMCAT全攻略
- · J2EE建议的学习路线(一篇不错的谈个人学习方法的文章)
- · EJB的事务处理属性
- · JBUILDER6.0配置WEBLOGIC6.1全攻略
- · tomcat应用程序的手工装载和3种自动装载
- · WebLogic6.0中Ejb的使用
- · Weblogic6.0上Connection Pool、DataSource的创建与使用
- · Running The Tomcat 4.0(英文,关键部分译成了中文。)
- · Weblogic6.0部署和配置WEB应用程序(1)
- · Weblogic6.0部署和配置WEB应用程序(3)
- · Tomcat自动reload新的class的插件
- · 在Java中使用DES算法
- · WebLogic Server 性能调优
- · WebLogic Domain的定义,翻译出来大家交流,第一次作赏个脸:]
- · 手把手教您如何搭建WAP应用开发环境
- · J2ME三种低级用户界面事件处理技术比较
- · J2ME程序开发新手入门九大要点
- · J2ME游戏开发学习之用setClip分割图片
- · J2ME小tip:setClip方法的使用
- · 彻底解决J2ME中的中文问题
- · 在J2ME中实现欢迎界面(附源代码)
- · 怎样优化J2ME程序当中的paint()函数

