EJB是Enterprice Java Beans的简称,即企业Java组件,是一个用于分布式业务应用标准服务端组件模型(这里强调是服务端组件模型,后面我们将会说一下为什么是服务端而不是客户端),是一组用java语言编写的包含字段和方法的代码体,而这些代码的核心任务就是实现纯粹的业务逻辑。
采用Enterprice Java Beans架构编写的应用是可伸的、事务性的、多用户安全的,可以一次编写这些应用,然后部署在任何支持Enterprice Java Beans规范的服务器平台,如JBoss、Weblogic等。
容器知多少?EJB容器呢?
EJB要在EJB容器中运行,运行时环境由容器建立,当完成EJB的开发后,需要将EJB组件部署到EJB容器中,只有正确部署后,EJB容器才能向客户提供业务服务。在这里想说一下容器,我们可以这么理解容器,容器只是一种概念,容器可以管理对象的生命周期,对象与对象之间的依赖关系。可以使用配置文件(通常是xml)然后定义好对象的名称、如何产生等,在启动容器之后,所有的对象都可以直接被取用(如果不用容器就需要编写一段相应的代码来产生对象或建立与对象之间的依赖关系等)。也就是原来不用容器前,都是需要自行编写程序以管理对象;应用了容器之后都会自动帮忙做好,就节省了再编写程序管理对象的环节。常用的容器有WebLogic、Tomcat等
在EJB中,JBoss是一个开源的J2EE应用服务器,可以在该容器下部署和运行EJB组件。每个J2EE应用服务器都包含EJB容器和Web容器,所以既可以运行EJB,也可以运行Web应用(而Tomcat目前只是Web容器,它不能运行EJB应用)。早期的JBoss版本只包含EJB容器,而不包含Servlet容器,因此需要把JBoss与Tomcat集成,二者协同工作,才能构成完整的JEE应用服务器。新版本的JBoss同时提供了Servlet容器和EJB容器,因此既能运行JavaWeb应用,又能运行EJB组件。
EJB的分类
EJB定义了三种企业Bean,分别是Session Bean(会话Bean)、Entity Bean(实体Bean)、MessageDriven Bean(消息驱动Bean),下面我们就来一一认识一下这三种Bean.
1、首先Session Bean
Session Bean实现会话中的业务逻辑。它分为有状态Bean和无状态Bean,每当客户端发出EJB调用请求时,容器就会选择一个Session Bean来为客户端服务,Session Bean可以直接访问数据库,但更多的时候,它是通过Entity Bean实现数据访问。
2、其次Entity Bean
Entity Bean实现一个业务实体。Entity Bean代表真实物体的数据,在EJB3.0中(后面我们会专门拿出一篇文章来介绍EJB3.0),Entity Bean仅作为普通的Java对象来使用,它负责跟数据库表进行对象与关系映射(O/R Mapping)
3、最后MessageDriven Bean
MessageDriven Bean作为JMS(Java Message Service)Java消息服务的API的监听者,异步处理其中的消息。MessageDriven Bean是用来专门处理基础消息请求的组件,能够轻松的与其他EJB交互。它特别适合用于当一个业务执行的时间很长,而执行结果无需实时向用户反馈的这样一种场合。
介绍完基本的EJB方面的知识,下面我想说一下JNDI。其实上网查找了好多关于EJB方面的资料,很多资料很顺便的介绍JNDI,弄的我也是云里雾里,所以很有必要把JNDI好好扒一扒,限于篇幅的原因,下篇文章,我们就来好好扒一扒何为JNDI,敬请期待!有什么困惑有什么不足的地方,非常欢迎您在下方留言,和我沟通,谢谢!