EJB入门

刚听到这个词,一堆疑问,这是什么?这做什么用的?它跟J2EE(J2EE不仅仅是指一种标准平台,它更多的表达着一种软件架构和设计思想)有什么区别和联系?

一、是什么

再来看看它的定义:

1、企业级JavaBean(Enterprise JavaBean, EJB)是一个用来构筑企业级应用的服务器端可被管理组件。EJB是一个封装有某个应用程序之业务逻辑服务器端组件。

2、EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。即它是一个组件模型,是用来构建服务端可被管理的组件,这些组件是能部署到跨平台的分布式环境中(EJB定义了一个跨平台的部署机制)

历史上可以看出,EJB由为企业级应用开发者实现后台业务提供一个标准而生,到因实现复杂、性能低下而被抛弃,最后3.0拥抱spring和hibernate特性而获得重生。3.0 使用POJO,提供依赖注入简化系统集成和配置,这也是3.0几乎成为一个全新的API,与之前完全不同。

二、种类

EJB容器可以接受三类EJB

  • 会话Bean(Session Beans)
    • 无状态会话Bean(Stateless Session Beans)
    • 有状态会话Bean(Stateful Session Beans)
  • 实体Bean(Entity Beans)
  • 消息驱动Bean(Message Driven Beans ,MDBs)

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

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

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

消息驱动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在这样的应用中就增加了不必要的复杂性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值