ejb3探索

 

1 概念

Enterprise Bean 是用 Java 编程语言编写的,用于封装应用程序业务逻辑的服务器端组件。

2 体系结构工作原理

开发者实现业务逻辑,由EJB 容器为 Enterprise Bean 提供了系统级服务,如事务管理和安全授权等,EJB开发者可以专心实现具体的业务逻辑。

3 EJB的分类

3.1 会话beanSession Beans

会话 Bean 是用于向特定用户会话提供服务的 Enterprise Bean。会话 Bean 通常在会话需要它时创建。与实体 Bean 相比,会话 Bean 的生存期较短。会话Bean包括两种类型:无状态会话bean、有状态会话bean

3.1.1 无状态会话beanStateless Session Beans

该 Bean 在它与用户的会话期间不保存状态信息。这些 Enterprise Bean 对于客户端和应用程序服务之间的简单交互(这些交互可以在一个方法调用中完成)是非常有用的。

处理订单的 Enterprise Bean 就是无态 Bean 的一个示例。每个订单可以由一个方法(如 processOrder())的调用进行处理。处理所需的全部信息都包含在方法参数中。

3.1.2 有状态会话beanStateful Session Beans

该 Bean 在它与用户的会话期间保存状态信息。这些 Enterprise Bean 对于需要客户端与应用程序服务交互的业务进程是非常有用的,此交互比单个方法调用需要更多的时间,并需要交互状态的内存。

联机购物车就是有态 Bean 的一个示例。最终用户可以通过客户端程序订购一些商品。管理交互的有态会话 Bean 必须积累商品,直到最终用户准备检查积累的订单,同意或拒绝商品,然后初始化商品处理。有态会话 Bean 必须存储未处理的商品,并使最终用户能够添加更多商品。

3.2 消息驱动BeanMessage Driven Bean

消息驱动 Bean 是一种 Enterprise Bean,它使得 J2EE 应用程序能够异步处理消息。该 Bean 用作 Java 消息服务 (Java Message Service, JMS) 消息侦听程序,此消息侦听程序类似于事件侦听程序,不同的是消息驱动 Bean 接收消息而不是事件。消息可以由任何 J2EE 组件(应用程序客户端、其他 Enterprise Bean 或 Web 组件)发送。

3.3 实体BeanEntity Bean

实体 Bean 是一种 Enterprise Bean,用于表示通常存储在数据库中的数据。实体 Bean 是 EJB 2.1 规范的一部分,在 J2EE 1.4 企业应用程序中使用这些 Bean。在 Java EE 5 企业应用程序中,应使用 Java 持久性 API 与数据库进行交互。

每个实体 Bean 都表示一个数据集,如数据库记录中的字段。实体 Bean 的每个实例都包含该数据的一个元素,如数据库表中的行。

4 EJB的适用场景及比较

4.1 适用场景

EJB容器管理EJB的实例化及销毁,支持分布式部署(分布式的定义我的理解就是和集群一样,有问题再补充吧)。在大并发条件下容器管理EJB的实例化及销毁,一次调用的时候是从EJB容器中获取一个已存在的实例,这样不必每次连接都实例化,对加快访问速度有帮助(不包括有状态的Session Bean)。

4.2 Entity Bean的实现比较

EJB3规范中对Entity Bean的实现要求和Hibernate很类似,EJB3中使用Java EE5支持的注释来与数据库映射,Hibernate中是使用xml描述文件来实现的(新版本的Hibernate也可以通过注释来实现的)。总的来说EJB3Entity BeanHibernate在技术实现上基本是一致的,实际上JBoss实现EJB3Entity Bean也就是采用了Hibernate

5 技术使用用例

5.1 环境支持及IDE

JBossEJB3的支持最早也比较成熟:在JBoss容器下开发环境是EclipseJBossEclipse插件,运行容器主要是JBossTomcat,目前很多资料都是以JBoss的环境作为例子。

Weblogic9不支持EJB3weblogic10 tech preview版本可以部分支持EJB3,对某些EJB3规范还不能支持。Weblogic附带的WorkShop(基于Eclipse开发的)不支持直接建立EJB3工程。

使用NetBeans工具和sun application server集成环境可以已比较容易的新建EJB3的工程,并且NetBeans在建Entity Bean 时支持通过定义好属性后自动生成set/get方法、或者是直接通过数据库生成Entity Bean。这点和目前许多Hibernate的工具很像可以大大减少工作量。NetBeans还可以根据自带的模版生成JSFcontrol类及展示页面。

5.2 用例说明

6 总结

总的来说:EJB3EJB2相比在实现上主要是简单开发,通过注释语言简化了很多EJB2的配置文件和接口规定,EJB3的开发更像是普通的Java类开发(至于EJB3的调试:目前来看好像还不能直接像Java类那样调试,需要部署容器调试,具体进一步了解后补充)。

EJB3Session BeanMessage Bean在功能及使用上和EJB2应该是一致的,主要用来实现组件的业务逻辑。EJB3中的Entity BeanEJB3规范参考Hibernate实现数据持久化的表现,主要是方便数据的持久化。

目前的运行容器JBossEJB3支持上应该是比较成熟的,Weblogic的发布版本不支持EJB3,只在tech preview版本中部分支持EJB3

你可能感兴趣的:(ejb3探索)