EJB是什么?有什么优点?

企业级JavaBean(Enterprise JavaBean, EJB)是一个用来构筑企业级应用的服务器端可被管理组件。(一种技术规范)

 

EJB容器可以接受三类EJB

  • 1)会话Bean(Session Beans)

    • ①无状态会话Bean(Stateless Session Beans)

    • ②有状态会话Bean(Stateful Session Beans)

  • 2)实体Bean(Entity Beans)

  • 3)消息驱动Bean(Message Driven Beans ,MDBs)

1)①无状态会话Bean是一类不包含状态信息的分布式对象,允许来自数个客户端的并发访问。实例变量的内容在前后数次呼出中不被保留(确切地说是不保证保留)。由于不必控制与用户间的对话信息而减少了开销,无状态会话Bean不像有状态会话Bean那样具有资源集约性。举例来说,一个发送邮件的EJB就可被设计为一个无状态会话Bean。在整个会话期,用户只向服务器提交一个动作:发送指定邮件到指定地址。(称为开关行为)

      ②有状态会话Bean是包含状态的分布式对象,即是说,贯穿整个会话它们都要保有客户端信息。举例而言,在一个网上商店进行实施结账很可能就需要一个有状态会话Bean,因为结账是一个多步动作,服务器端必须可以随时了解到用户已经进行到了哪一步。此外,尽管有状态会话Bean的状态信息可被保持,但始终只能是由同一个用户来访问之。

2)实体Bean是含有持久化状态的分布式对象。这个持久化状态的管理既可以交给Bean自身(Bean-Managed Persistence,BMP),也可以托付于外部机制(Container-Managed Persistence,CMP)。

3)消息驱动Bean是支持异步行为的分布式对象。它们并不对请求进行当即响应。比方说,某网站用户点击“请通知我更新信息”按钮,将会触发某个MDB将这名用户加入到数据库的希望获得更新信息用户列表中。这个动作就是一个异步的消息驱动过程,因为用户不必等待当时会返回某个结果。MDB的消息源来自Java消息服务(JMS)提供的消息队列或消息主题。自EJB 2.0规范起,JMS被加入进来以允许在容器内部实施事件驱动处理。与其他EJB不同,MDB不存在一个用户视图(如需要用户引用的远程接口),用户也不能通过资源定位获得一个MDB实例。MDB只在后台监听消息源并实施自动处理。

除了上述以外,当前还有一些EJB处于设想阶段,如JSR 86提出了用于在Java EE应用中集成多媒体对象的媒体Bean(Enterprise Media Beans)。

 

EJB部署于应用服务器端的EJB容器中。规范给定了EJB与EJB容器之间,以及用户代码与EJB/EJB容器之间的交互方式。对于Java EE API,javax.ejb包定义了EJB类,javax.ejb.spi包定义了EJB容器应当实现的各个接口。

在EJB 2.1和以前的版本中,每个EJB都由一个类和两个接口组成。EJB容器负责创建这个类的实例,接口则供客户端调用。

两个接口分别被称为Home接口和组件接口,负责提供各个EJB远程方法声明。这些EJB远程方法可分成两组:

  • ①类方法:由Home接口提供。与特定实例无关,仅负责一些公共内容,比如创建一个新的EJB实例(create方法),或寻找一个已经存在的EJB实例(find方法)等等。

  • ②接口方法:由组件接口提供的针对特定实例的业务方法。

EJB容器将为这些接口提供对应的实现类以充当客户远程代理,当客户端调用这个生成的代理类的某个方法时,代理类内部会将此调用的方法和参数封装成一个消息发送给服务器。服务器收到消息后在转发给真实的EJB实例,后者负责执行真正的业务逻辑。

远程通信

EJB规范要求EJB容器能够支持基于RMI-IIOP的EJB访问。EJB既可被任何CORBA应用访问,也能提供Web服务。

事务

EJB容器必须支持符合ACID(原子性/一致性/独立性/持久性)特性的容器级事务管理,以及bean内部事务管理。容器级事务需在部署描述符中(EJB应用的配置文件)进行声明。

事件

EJB使用JMS向客户对象发送消息,客户则可以异步地接受这些消息。MDB则接受来自客户端的消息。

命名和目录服务

EJB客户端使用JNDI或CORBA名字服务定位Home接口实现 对象。通过此Home接口,用户还可以寻找,创建或删除实体对象。

安全

EJB容器对客户端的访问权限负责。

部署EJB

EJB规范还定义了一个跨平台的统一部署机制。部署描述符中定义了关于EJB应用的一切相关内容。文件名通常为ejb-jar.xml。

部署描述符是一个XML文档,负责为该EJB应用中的每一个EJB定义入口。部署描述符的主要内容包括:

  • Home接口名

  • Bean的Java类名

  • Home接口的Java接口名

  • 组件接口的Java接口名

  • 持久化存储(针对实体Bean)

  • 安全策略和角色分配

通常EJB容器提供者还定义了一些额外的XML或其他格式描述文件来强化其容器的功能。他们还同时提供这些描述文件的解读工具类和对Home接口的自动实现类生成。

EJB3.0起开始广泛使用Java注释替代传统的部署描述符ejb-jar.xml。但后者仍然有效。

优点

性能优越、强大的容器支持

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值