客户共享
Home
,但是不会共享
bean
每个客户都要得到自己的
EJBObject
引用和
bean
客户共享
Home
,而且可能共享
bean
如果两个客户想要访问同一个
Customer
(
Fred Smith #420
),那么这两个客户都会有同一个
EJBObject
的引用。
得到
Home
桩后,客户在
Home
上调用
create
(创建方法),
Home
则创建
bean
,而且会为
bean
创建
EJBObject
,并返回
EJBObject
桩
得到一个
Home
桩后,客户在
Home
上调用
create
,
Home
为客户提供一个现有
EJBObject
的桩,但是没有为这个
EJBObject
关联
bean
,
bean
一直待在池中,知道客户使用
EJBObject
桩真正调用一个业务方法时,
bean
才会出来
消息驱动
bean
没有客户视图。消息驱动
bean
没有向客户展现方法的接口。换句话说,消息驱动
bean
没有
Home
或者
EJBObject
,它们没有
Home
接口或组件接口
客户视图
客户想要的是
bean
的一个引用。但是,客户最多只能得到
bean
的组件接口(
EJB
对象)的一个引用。
如果客户想要一个
EJB
对象引用,客户必须得到
bean home
接口的一个引用
客户要在
bean
的
home
上完成一个查找。
客户如何使用会话
bean
:创建、使用和删除
1.
创建:客户想
home
接口请求
bean
组件接口的一个引用(客户在
home
桩上调用一个
create
方法)
2.
使用:客户调用组件接口中声明的业务方法
3.
删除:客户调用
bean
的
EJB
对象桩上的
remove
得到
home
接口桩
1.
得到一个
InitialContext
2.
使用
InitialContext
得到
bean
的
home
3.
把查找的结果指定给
home
接口引用
窄化会强制
JNDI
查找返回的对象肯定是
home
接口。
Home
接口规则
1.
导入
javax.ejb.*
和
java.rmi.RemoteException
2.
扩展
EJBHome
3.
声明一个
create
()方法,这个方法要返回组件接口
a)
对于无状态会话
bean
,只能有一个
create
,而且它必须没有任何参数
b)
有状态会话
bean
可以有多个重载的
create
方法,而且不一定非要有一个无参数的
create
c)
有状态
bean
中创建方法的名字必须以
create
开头
EJBHome
中的方法
EJBMetaData getEJBMetaData
():从
bean
得到反射之类的信息
HomeHandle getHomeHandle
():对
home
串行化,这样以后就能再次使用这个
home
,而无需通过
JNDI
Void remove
(
Handle h
):告诉
home
,已经用完了一个会话
bean
Void remove
(
Object key
):告诉
home
删除一个实体
bean
组件接口的规则
1.
导入
javax.ejb.*
和
java.rmi.RemoteException
2.
扩展
EJBObject
3.
声明一个或多个业务方法啊,这些方法都要抛出一个
RemoteException
异常
a)
参数和返回类型必须是
RMI-IIOP
兼容(即可序列化)
b)
可以有重载方法
c)
每个方法都必须声明一个
RemoteException
异常
d)
可以声明自己的应用异常,但是这些异常不能是运行时异常
EJBObject
中的方法
Object getPrimaryKey()
:得到实体
bean
的主键
EJBHome getEJBHome()
:得到
bean
的
home
Handle getHandle()
:保存
EJBObject
的一个引用
Void remove()
:已经用完
bean
Boolean isIdentical(EJBObject o)
:比较两个
EJB
对象,查看它们是否引用同一个
bean
Handle getHandle()
:
句柄是一个可串行化对象,它知道怎么拿回原来的远程
EJB
对象。句柄本身不是一个桩,但它能得到桩。句柄只有一个方法,就是
getEJBObject()
。这个方法会返回一个类型为
EJBObject
的对象。所以必须对得到的桩进行类型强制转换和窄化。
Boolean isIdentical(EJBObject o)
如果两个引用来自同一个
home
,即使这两个桩引用了两个不同的远程
EJB
对象,
isIdentical
也返回
true
只要是两个不同的桩,这个方法肯定返回
false
如果两个桩引用了有相同主键的两个实体,这个方法就返
true
在
home
上调用删除方法不是要删除这个
home
在
home
上调用删除方法只是告诉
home
删除一个
bean
。也就是从这个
home
生成的
bean
在调用一个
home
删除方法时,必须唯一的标识你要删除的那个
bean
。对于实体
bean
,要用主键或者一个句柄来标识
bean
,对于会话
bean
,则必须使用句柄。句柄只适用于远程
home
客户。
|
远程客户视图
|
本地客户视图
|
EJBHome
|
EJBMetaData getEJBMetaData()
HomeHandle getHomeHandle()
Void remove(Handle h)
Void remove(Object key)
|
|
E
JBMetaData getEJBMetaData()
HomeHandle getHomeHandle()
Void remove(Handle h)
Void remove(Object key)
|
|
EJBObject
|
Object getPrimaryKey()
EJBHome getEJBHome()
Handle getHandle()
Void remove()
Boolean isIdentical(EJBObject o)
|
Object getPrimaryKey()
EJBLocalHome getEJBLocalHome()
Handle getHandle()
Void remove()
Boolean isIdentical(EJBObject o)
|
|
分享到:
相关推荐
ejb培训笔记和源代码 ejb培训笔记和源代码
Weblogic EJB 学习笔记 ejb 基础知识 EJB 组成 EJB 配置描述器 建立ejb 档案文件 容器管理的事务 ejb 引用
平时学习笔记 java ejb3相关 开发技术
达内培训的ejb课程笔记
EJB3课堂笔记,通俗易懂,很简洁,PDF格式
EJB学习笔记 自己的学习心得
比较实用的东西,具体介绍了Weblogic Ejb的使用
EJB学习笔记2,希望大家多多进步
EJB学习笔记.doc
经典资料+个人心得,希望大家能喜欢
比较详细的EJB笔记,介绍了EJB的一系列知识,包括EJB的概念、发展、编程方式与步骤,还主要介绍了JPA的编程方式
EJB学习笔记.rar
ejb3.0入门经典笔记,我是我自己总结,希望对大家有帮助!
二、企业级应用的架构发展历史 Host/Terminal(主机/终端,终端不具备处理能力,数据由主机处理) 终端为哑终端,可接受命令,不处理命令 优点:安全(不能直接访问) 性能优越(目前关键应用仍在使用) 缺点:...
笔记 很好的ejb学习笔记 笔记 很好的ejb学习笔记 笔记 很好的ejb学习笔记 笔记 很好的ejb学习笔记
ejb3.0笔记和示例代码对应.doc
程祖红达内EJB课堂笔记完全版,最全的笔记
EJB 笔记