EJB作为EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。
目前主要是用的是EJB3,与EJB2相比EJB3是JavaEE平台遇到了Dot NET平台之后的反击,也可以认为是Java开源领域的一次胜利,EJB3吸收了spring、hibernate等开源框架的优点。
EJB的分类
在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。
session bean
session bean作为代表一个可处理应用中业务逻辑的完整组件,主要包括了各种业务逻辑的实现代码。session bean部署到EJB容器之后,其他客户端就可以获取该EJB组件,并调用他的方法。从客户端获取session bean到客户端调用该方法结束,可称为客户端与session bean之间的一次会话,因此session bean也称为会话bean。会话bean又分为有状态会话bean和无状态会话bean(后面文件有介绍)。
message driven bean
message driven bean简称MDB,也就是消息驱动bean,本质上是由无状态会话bean发展而来的,但它与session bean的最大不同在于,他不允许客户端调用,只是JMS消息的异步消费者。它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态SessionBean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。
entity bean
entity bean(实体bean)是域模型[1] 对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。
EJB的作用
EJB是JavaEE的核心规范,而且是RMI、JNDI、JMS等规范的具体运用。是分布式技术的一种实现,它提供了一种良好的组件封装,EJB容器负责处理如事务、访问控制等系统级别问题,而EJB开发者则集中精力去实现业务逻辑;对于页面开发者来说,无需关心EJB的存在和实现方式,他们只需要调用EJB的方法就可以了。EJB组件是一种可移植的、与前端技术无关的服务器组件。
对于规模小、伸缩性要求不大的企业级应用而言,使用spring+hibernate为核心的技术开发即可,但对于应用规模较大,增长速度快,伸缩性能要求高,而且可能需要使用jsp页面以外的其他客户端来说的企业级应用来说选择EJB为核心的技术更为合适。