Weblogic_Server与EJB

一、什么是EJB?

§EJB 组件是为企业级应用设计的java 组件模型,是基于标准分布式对象技术

§EJB 组件提供了应用的商务逻辑部分。由于它们不涉及表示层的问题,因此必须与其它的显示技术(如servlets),服务于HTML 客户端的JSP技术,或者使用了诸如AWT、Swing 技术的java 应用一起使用。

§实现了EJB 规范的应用服务器提供了可以解决安全性、资源共享、持续运行、并行处理、事务完整性等复杂问题的服务,从而简化了商业应用系统

§EJB 技术将开发人员和底层中间件相隔离; 开发人员看到的仅仅是Java 平台。将使得EJB 服务器厂商在不干扰用户的EJB应用程序的前提下,有机会改进中间件层

§EJB 服务器完成“繁杂”的工作:

应用开发人员关注于业务逻辑的实现,而不是底层的实现机制,从而提高开发效率。

二、Session Bean

§一般用于实现应用程序的控制、处理和工作流,在MVC中,会话Bean处理Control代表单个客户端来执行,当EJB容器失效后就不存在。

§短暂存在:会话Bean 通常用来提供服务,表示与客户机之间的一个会话,它们不代表长期存在的事物

§Session Bean以分为有状态SessionBean和无状态SessionBean

§示例:计算器、购物车、命令处理器 

 

三、无状态会话Bean?有状态会话Bean

Stateless

在不同方法调用间不保留任何状态

事务处理必须在一个方法中结束

通常资源占用较少;可以被共享(因为它是无状态的)

Statefull

可以在不同的方法调用间保持针对各个客户端的状态

与客户端的联系必需被维持;通常开销较大

四、Entity Bean

实体Bean表示持久数据的对象视图,如数据库中的一个数据行。实体Bean有一个就像数据库中的主键一样,唯一地标识一个实体Bean

实体Bean有两种类型:BMP,CMP

实体Bean的示例:

描述一个定单号

包含客户的个人信息

五、 会话Bean?实体Bean

会话bean

表示一个业务过程

每一客户一个实例

Short-lived:与客户生命同步

暂态的

服务器崩溃后丢失

可以是事务性的

实体bean

表示业务数据

在多个客户间共享实例

Long-lived:与数据库中数据同步

持久的

服务器崩溃后可重构

总是事务性的

六、MessageDriven Bean

实体Bean和会话Bean均采用同步编程模式,而MDB引进了一种异步处理方式

MDBJMSEJB集成的结果,不同于其他EJB,客户机不需要直接调用消息Bean,相反,客户机只需发一个消息给JMS目的。在消息到达JMS目的之后,MDBonMessage()将被调用,以处理这个消息

MDB通常用于在服务器中执行异步操作

七、Weblogic EJB特性

Stateful session beansentity beans支持caching

CMP entity bean增加了很多提高性能的特性,如提供批量操作功能

CMP entity bean,Weblogic Server提供了多种增值的数据库访问特性,如自动产生主Automatic primary key generation

Automatic table creation

可以将EJB部署到cluster上,支持EJB的负载均衡和容错

……

 

SessionBean

有状态会话Bean可以在客户访问之间保存数据,而无状态会话Bean 不会在客户访问之间保存数据。两者都实现了javax.ejb.SessionBean 接口,EJB 容器区通过部署文件ejb-jar.xml 来判断是否为一个SessionBean 提供保存状态的服务

八、EntityBean的基本原理

EJB规范把EntityBean定义为一种持久性的、事务性的以及可以共享的组件,以便多个客户机可以同时使用其中的业务数据。而且EntityBean能够提供持久存储支持,直到被删除为止

EntityBean表示持久数据的对象视图,EntityBean中的字段相应于底层持久存储中的数据。

EntityBean的状态是事务性的,当客户机更新事务中的字段时,仅当事务提交后,这个更新才是持久的。

 

EntityBean的持久类型

作为持久对象,实体Bean的状态必须保存在数据库中,实体Bean有两种操作类型:容器管理持久性和Bean管理持久性

Bean管理持久性的情况下,Bean需要提供代码,从数据库中加载实体bean和把实体bean写到数据闸中,通常,这需要在bean类中增加JDBC代码,读取或更新实体bean的字段,或把实体bean的字段写入数据库中

在容器管理持久性的情况下,EJB容器自动地提供把实体Bean写入数据库中的代码,不需要增加JDBC代码

九、MessageDrivenBean

消息驱动BeanEJBJMS的集成产品,消息驱动Bean也存在于EJB容器中,而且也可以利用EJB容器提供的服务,但是消息驱动Bean并不直接和客房机进行交互,它只是一个JMS消息的监听器

消息驱动Bean作为JMS队列和主题的监听器部署,而且响应新到JMS消息执行它们的业务逻辑

客户端不需要直接调用消息Bean,客户机只需发一个消息给JMS目的,在消息到达JMS目的之后,消息BeanonMessage()将被调用,以处理这个消息

客户通过将JMS信息传送到Bean监听的队列或主题间接地调用Bean的方法

十、MDB的生命周期

MDB的生命周期类似于无状态的会话Bean

可以在ejb-jar.xml中为Bean指定一个JMS QueueTopic,EJB容器将把MDB注册为一个消息监听器,当消息到达JMS目的时,EJB容器将寻找或创建一个MDB实例。

同无状态会话Bean一样,MDB也可以采用实例池的方式

十一、MDB的部署描述文件

ejb-jar.xml:包含MDB的名字,事务类型和JMS目的

weblogic-ejb-jar.xml

<destination-jnid-name>中定义JMS目的

因为MDB不直接与客户机进行交互,因此不需要定义<jndi-name>

默认时,MDB使用标准的JMS连接工厂,也可以利用<connection-factory-jndi-name>指定一个连接工厂

十二、消息Bean与并发控制

EJB容器将负责MDB的并发控制,MDB不是多线程程序,EJB容器不会采用重入的方式调用MDB实例,与无状态会话Bean一样,EJB容器也把MDB实例放到内存的实例池中

Weblogic-ejb-jar.xml中的<initial-beans-in-freepool><max-beans-in-freepool>可以控制实例池的容量

MDB的并发控制方式使EJB容器可以尽可能多地并行处理消息,EJB容器是以并发线程的方式处理消息的,因此消息的处理有可能打乱顺序。开发人员不应当假定MDB是按顺序传递消息的

十三、MDB与事务

MDB提供了三个不同的事务选项

Required

如果指定了Required事务属性,EJB容器可以自动地开始一个事务,之后,从JMS队列或主题中接收消息的过程将包含在事务中

可以确保JMS消息的接收过程和onMessage()调用均参与JTA事务,当OnMessage()调用返回时,EJB容器将提交事务,如果事务中止执行,JMS消息将继续保持在JMS目的中,并且可以再次传递给某个MDB

NotSupported

如果指定了NotSupported事务属性,在调用MDBonMessage()之前,EJB容器不会开始事务。当消息的接收过程无法参与事务,且JMS的消息确认机制能够提供有效的保证时,可以使用它

十四、Bean管理的事务

利用Bean管理事务,在Bean中可以使用EJBContext.getUserTransaction(),得到对UserTransaction对象的引用

消息的接收过程不参与事务,如果UserTransaction中止,消息无法自动地重新传递

应当使用一个单独的JMS目的专门处理应用级的错误,以确保不会继续重新传递不适当的消息

 

十五、消息的确认    

MDB中,EJB容器自动地处理JMS消息的确认

MDB使用Required事务属性时,EJB容器在事务提交时对消息进行确认

MDB使用NotSuppoerted事务属性或Bean管理的事务时,EJB容器将采用AUTO_ACKNOWLEDGE确认方式

可以在ejb-jar.xml中使用<jms-acknowledge-mode>指定消息确认的方式

十六、MDBJMS

利用EJB容器的部署描述文件,MDB可以自动地支持并发的消息处理,JMS应用也可以通过扩展ServerSessionPool来达到这个目的,但增加了开发人员的工作量

MDB是把异步接收的过程加到JTA事务中的唯一

MDB简单且基于标准

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值