客户共享
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)
|
|
分享到:
相关推荐
python学习资源
jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目
基于Andorid的音乐播放器项目设计(国外开源)实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
python学习资源
python学习资源
python学习一些项目和资源
【毕业设计】java-springboot+vue家具销售平台实现源码(完整前后端+mysql+说明文档+LunW).zip
HTML+CSS+JavaScarip开发的前端网页源代码
python学习资源
【毕业设计】java-springboot-vue健身房信息管理系统源码(完整前后端+mysql+说明文档+LunW).zip
成绩管理系统C/Go。大学生期末小作业,指针实现,C语言版本(ANSI C)和Go语言版本
1_基于大数据的智能菜品个性化推荐与点餐系统的设计与实现.docx
【毕业设计】java-springboot-vue交流互动平台实现源码(完整前后端+mysql+说明文档+LunW).zip
内容概要:本文主要探讨了在高并发情况下如何设计并优化火车票秒杀系统,确保系统的高性能与稳定性。通过对比分析三种库存管理模式(下单减库存、支付减库存、预扣库存),强调了预扣库存结合本地缓存及远程Redis统一库存的优势,同时介绍了如何利用Nginx的加权轮询策略、MQ消息队列异步处理等方式降低系统压力,保障交易完整性和数据一致性,防止超卖现象。 适用人群:具有一定互联网应用开发经验的研发人员和技术管理人员。 使用场景及目标:适用于电商、票务等行业需要处理大量瞬时并发请求的业务场景。其目标在于通过合理的架构规划,实现在高峰期保持平台的稳定运行,保证用户体验的同时最大化销售额。 其他说明:文中提及的技术细节如Epoll I/O多路复用模型以及分布式系统中的容错措施等内容,对于深入理解大规模并发系统的构建有着重要指导意义。
基于 OpenCV 和 PyTorch 的深度车牌识别
【毕业设计-java】springboot-vue教学资料管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
此数据集包含有关出租车行程的详细信息,包括乘客人数、行程距离、付款类型、车费金额和行程时长。它可用于各种数据分析和机器学习应用程序,例如票价预测和乘车模式分析。
把代码放到Word中,通过开发工具——Visual Basic——插入模块,粘贴在里在,把在硅基流动中申请的API放到VBA代码中。在Word中,选择一个问题,运行这个DeepSeekV3的宏就可以实现在线问答
【毕业设计】java-springboot+vue机动车号牌管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
【毕业设计】java-springboot-vue交通管理在线服务系统的开发源码(完整前后端+mysql+说明文档+LunW).zip