通过 Ejb2.0,得其原理(解决服务器压力
EJB 是一种标准描述了构建应用组件要解决的:
可扩展 (Scalable)
分布式 (Distributed)
事务处理 (Transactional)
数据存储 (Persistent)
安全性 (Secure)
1.Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。
2.Entity Bean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。 (这个不怎么常用。。具体为什么还不理解)
3.MessageDriven Bean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。
ejb运行容器:基本上没有免费的,用得比较多的有Bea weblogic/ websphere / jboss
WebLogic 分为domain(工作区)
weblogic控制台:http://localhost:7001/consloe
sessionBean处理业务逻辑的
JBuilder和ejb是最佳搭档
规范:
1、提供一个远程接口:EJBHome(javax.ejb.*)--创建远程对象的
2、EJBObject:远程对象实现的接口
3、远程对象:实现sessionBean接口
运用JBuilder..创建ejb
写完后,生成jar包,有
1、 ejb字节码
2、META-INF(ejb-jar.xml和weblogic系列的xml文件)
JBuilder处理ejb的功能很强大
---------------------------------------------------------------------------------------------------
9.12日 听课的收获的:老师讲的很笼统,毕竟这些部分还是要靠自己自学的~!
setSessionContext(); ejb容器调用的,这个方法的作用:将ejb对象和ejb容器的上下文环境关联起来
关联起来的目的:为的是ejb程序可以借助上下文,访问到ejb容器的相关信息
调用ejbCreate();实例化SessionBean缓存在ejb池,
然后再调用我们的业务方法!
其他方法:
ejbRemove是ejb容器在销毁ejb实例对象之前,调用该方法,完成资源的释放~!(容器自己的支持和策略决定,我们不会知道什么时候调用该方法,由ejb容器自己去完成!!)
无状态的SessionBean只需上面3个方法~!
----------------------------------------
而对于有状态的还需要以下两个方法:
ejbActivate() 激活
ejbPassivate() 钝化(保存到磁盘)
--------------------------------------
无状态:ejb不会为特定的客户端程序维持状态~!
例如 :client 1-->ejb容器,sum=sum+调用2+2 得到一个结果sum=4
Client 2-->ejb容器,sum=sum+调用2+2 同时访问时: 这样sum=8而不是4
数据出现错误~!!(不会维持特定客户端的状态值~!)
有状态:ejb会为特定的客户端程序分配一个不同的ejb对象维持状态~! 1 -1 对应的~!
但是资源会有限的。假如用户太多了~我们可以实现这样一个过程!
client 1 --------------------------------calA
client 2 --------------------------------calb
client 3 --------------------------------calc
client 4 ------------假设4客户来时,ejb提供的资源满了。这时ejb容器会根据最少,最近不活动的客户对象,假设是3,则将calc清空给4用,3过去的数据会被钝化(保存到磁盘)
在资源不足时,根据最少最近不使用原则,钝化ejb对象,调用ejbPassdivat方法~!
但是若是发现4也是不怎么使用ejb对象calc,将4客户的数据钝化到磁盘,而3开始使用calc数据,则会将3磁盘中的数据加载到calc,这样的过程叫做激活,调用ejbActivate