实战 EJB 系列 中文 Java 技术网::中国 Java 开源中心 http://www.cn-java.com
2
索引
实战
EJB
之
—
开发和部署你的第一个
Enterprise JavaBean..............................................3
什么是企业 JavaBeans 技术?..............................................................................................3
EJB 体系结构.......................................................................................................................4
开发人员的角色分配 ..........................................................................................................4
编写第一个
EJB
程序
..........................................................................................................5
部署到应用服务器 ..............................................................................................................7
开发和部署测试程序 ..........................................................................................................9
运行测试程序 ....................................................................................................................12
实战
EJB
之二
开发会话
Bean
(无状态会话
Bean
)
........................................................13
什么是无状态
Session Bean? ............................................................................................13
无状态 Session Bean 寿命周期 .........................................................................................13
编写一个无状态的 Session Bean 程序 .............................................................................14
部署到应用服务器 ............................................................................................................20
开发和部署测试程序 ........................................................................................................21
运行测试程序
....................................................................................................................24
实战
EJB
之三
开发会话
Bean
(有状态会话
Bean
)
........................................................26
什么是有状态 Session Bean? ............................................................................................26
有状态 Session Bean 寿命周期 .........................................................................................26
编写一个有状态 Session Bean 程序 .................................................................................28
部署到应用服务器
............................................................................................................33
开发和部署测试程序 ........................................................................................................34
运行测试程序 ....................................................................................................................38
实战
EJB
之四
开发实体
CMP
(
EJB 1.1
规范)
...............................................................39
EJB 1.1 规范中的 CMP .....................................................................................................39
Entity Bean
的寿命周期
.....................................................................................................41
编写一个 EJB 1.1 的 CMP 程序 ......................................................................................42
部署到应用服务器 ............................................................................................................48
开发和部署测试程序 ........................................................................................................51
运行测试程序 ....................................................................................................................56
实战
EJB
之五
开发实体
BMP
(
EJB 1.1
规范)
...............................................................57
EJB 1.1 规范中的 BMP .....................................................................................................57
编写一个 EJB 1.1 的 BMP 程序 ......................................................................................60
部署到应用服务器 ............................................................................................................68
开发和部署测试程序 ........................................................................................................69
运行测试程序
....................................................................................................................71
实战
EJB
之六
开发
EJB 2.0
的
CMP(
本地接口例程
) .......................................................72
实战
EJB
之七
开发
EJB 2.0
的
CMP(EJB QL)...................................................................72
实战
EJB
之八
开发
EJB 2.0
的
JMS ...................................................................................72
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
实战 EJB 系列 中文 Java 技术网::中国 Java 开源中心 http://www.cn-java.com
3
实战
EJB
之
—
开发和部署你的第一个
Enterprise JavaBean
企业 JavaBeans(EJB)的组件结构是以作为可重复使用的服务器端组件而设计的,它使
企业能够建立可升级、安全可靠、可运行于多重平台且以商务为重点的应用程序。实战 EJB
系列文章将以实战例程向大家全面系统介绍 EJB 的几种 Enterprise JavaBean 概念。
在本节中你将了解到:
n 什么是企业 JavaBeans 技术?
n EJB 体系结构
n EJB 开发人员的角色分配
n 编写第一个 EJB 程序
n
部署到应用服务器
n 开发和部署测试程序
n 运行测试程序
什么是企业 JavaBeans 技术?
EJB 结构是 JavaTM 平台上的服务器端组件模型。设计 EJB 结构的目的是, 通过使企业
开发人员将注意力只集中于编写商务逻辑, 从而解决上面所提出的问题。EJB 技术取消
了编写"全程(plumbing)" 码的要求。例如, 企业开发人员不再需要编写那些处理事务行
为、安全、连接共享或线程的代码, 因为 EJB 体系结构将这些任务委托给服务器厂商完
成了。
对用户和这一技术的实现者来说, 将会获得如下收益:
•
生产效率
:
使用这一技术, 企业开发人员将会进一步提高生产效率。他们不仅能够获得
在 Java 平台上的开发成果, 而且能够将注意力集中于商务逻辑, 从而使效率倍增。
• 业内支持
:
试图建立 EJB 系统的客户会获得一系列可供选择的解决方案。企业
JavaBeans
技术已经被多达
25
个公司所接受、支持和应用。
• 投资保护: 企业
JavaBeans
技术建立在企业现存系统之上。事实上
,
许多
EJB
产品都
将建立在已有的企业系统之上。今天企业所使用的系统, 明天将会运行企业
JavaBeans 组件。
• 结构独立
:
企业 JavaBeans 技术将开发人员和底层中间件相隔离; 开发人员看到的仅
仅是
Java
平台。
这一点除下面将要谈到的交叉平台的好处外
,
还将使得
EJB
服务
器厂商在不干扰用户的 EJB 应用程序的前提下, 有机会改进中间件层。
•
服务器端仅写一次, 即可随处运行(Server-Side Write Once, Run AnywhereTM): 通
过对 Java 平台的支持, EJB技术将"仅写一次, 随处运行"的概念提高到了一个新的水
平。它可以保证一个 EJB 应用程序可运行于任何服务器, 只要这个服务器能够真正
提供企业
JavaBeans APIs
。
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
实战 EJB 系列 中文 Java 技术网::中国 Java 开源中心 http://www.cn-java.com
4
EJB
体系结构
理解 EJB 体系结构可以从两个方面分析:客户端和服务器端。
EJB 体系结构的客户端包含了调用 EJB 组件特定业务所需的 EJB 接口(扩展了 EJBHome 和
EJBObject 接口的组件接口),同时还包含了服务器端处理对象的句柄(部署组件时生成的残根
类)。在
EJB
体系结构的服务器端则包含了
EJB
组件实现的实例,同时还包含了用来在客户端
与 EJB 组件之间进行映射的容器代码。结构如下图 1-1:
图 1-1
EJB 客户应用程序使用 JNDI 来查找对本地接口的实例引用,通过本地 EJB 接口和远程 EJB 主
接口调用和引用 EJB 组件的全部方法和属性。
开发人员的角色分配
EJB 技术将开发人员分成固有的五种角色: 服务器提供者、 容器提供者、 企业 Beans 提
供者、 应用程序装配者和部署者。对上述五种角色描述如下:
• 服务器提供者是分布式事务管理方面的专家, 主要负责处理分布式对象和低层次系统
服务。数据库和 TP 监控器厂商可典型地充当该角色。
• 容器提供者一般是系统编程方面的专家, 由于容器有能力将 EJB 环境与现存应用程序
(如 SAP R/3 和 CICS)桥接起来, 因而这些专家有可能具备某一应用领域的经验。由于
EJB
Client
EJB Home
Interface
EJB Remote
Interface
Stub
Stub
Create
Remove
Find
Business
Invocation
客户端环境
Skeleton
EJB XML DD
EJB
Implementation
Delegate
EJB
Implementation
Delegate
EJB
Implementation
Delegate
EJB
Implementat
ion
Delegate
EJB 组件池
J2EE EJB 容器/服务
EJB Implementation
Network
Configure
Create,Remove,Find,Passivate
,Activate,Load,Store,Bussines
Invocation
服务器端环境
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
实战 EJB 系列 中文 Java 技术网::中国 Java 开源中心 http://www.cn-java.com
5
容器为 Bean 提供了安全、可升级和事务性的环境, 因而容器提供者需具备这些领域的
经验。数据库和事务服务器厂商也适合这一角色, 并可提供标准容器。
• 企业 Beans 提供者为 EJB 应用程序提供"积木", 他们是典型的以 Bean 的形式编写商
务逻辑的域专家,而他们不一定是数据库或系统编程方面的专家。他们生成包括所有组
件在内的
EJB JAR
文件。对象库厂商适合这一角色。
•
应用程序装配者是域专家, 他们的工作是用第三方 Beans 建立应用程序, 他们也有可
能建立客户端 GUI。典型的应用程序装配者通常是程序员,他们建立应用程序来可访
问已部署的组件。
• 部署者通常熟悉企业的操作环境, 他们利用应用程序包并设置部分或全部应用程序的
安全和事务描述符。部署者也有可能使用工具来修正
Bean
的商务逻辑。
编写第一个
EJB
程序
开发一个 EJB 至少包括四个步骤:
n 开发主接口
n
开发组件接口
n 开发 Bean 实现类
n 编写部署文件
我们将编写一个最简单 Session Bean 来实现这四个元素,这个例子将通过一个 getHello()方
法返回一个“
Hello, EJB
”字符串,并为这个
Bean
起一个好听的名字:
Hello
注意:假设你使用的 Windows 操作系统,这与程序代码和部署文件内容无关,但这些仅可
能影响到存储路径和命令行。
1.开发主接口:
是由 Bean 开发人员编写的一个 Bean 的主接口(interface)程序,负责控制一个 Bean 的生
命周期(生成、删除、查找 Bean)。只需要开发人员给出一个主接口类,类方法的实现由容
器来完成。所以开发一个 Bean 的接口程序是非常的简单的。
一般情况下,习惯将主接口的命名规则规定为
<bean-name>Home
,所以我们把这个主接口类
起名为 HelloHome
HelloHome.java
代码:
public interface HelloHome extends javax.ejb.EJBHome{
public Hello create()
throws java.rmi.RemoteException,
javax.ejb.CreateException;
}
假设我们保存到 D:\ejb\Hello\src\HelloHome .java
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com