• 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简单且基于标准

     

     

     

     

  • 相关阅读:
    算法题(2):两个数组的交集
    git 的一些小 tips
    linux 命令 -- chmod
    linux 命令 -- alias 和 grep
    docker 学习笔记(2)
    docker 学习笔记(1)
    redis 学习笔记(2)
    redis 学习笔记(1)
    对对象的list集合以excel表格导出
    字符串处理
  • 原文地址:https://www.cnblogs.com/CharmingDang/p/9663918.html
Copyright © 2020-2023  润新知