Ejb 初识Ejb,通过ejb2.0得其原理,学习Ejb3.0(学习中。。。

来源:互联网 发布:人工智能三驾马车是谁 编辑:程序博客网 时间:2024/06/03 20:39

                                      通过  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