深入学习EJB3.0之一:概述与搭建环境

来源:互联网 发布:如何利用网络交朋友 编辑:程序博客网 时间:2024/04/28 22:05

    现在做的项目正在使用EJB3,虽然用了有一段时间,但是自己总感觉并不是十分理解其中的许多内容,也并不清楚到底用EJB有什么好处,所以找了一本书(EJB3.0入门经典)进行研读,并根据自己和网上大家的理解准备写一系列详细的学习日志,如有错误,请大家不吝赐教。

一、EJB的概述:

1.EJB (Enterprise JavaBean)J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话BeanSession Bean),实体BeanEntity Bean)和消息驱动BeanMessageDriven Bean)。

① Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。

② Entity Bean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。

③ MessageDriven BeanEJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态 Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。

2.EJB实际上是SUNJ2EE中的一套规范,并且规定了一系列的API用来实现把EJB概念转换成EJB产品.EJB是 BEANS,BEANS是什么概念,那就是得有一个容纳她,让她可劲造腾的地方,就是得有容器.EJB必须生存在EJB容器中.这个容器可是功能强大之极!她首先要包装你BEAN,EJB的客户程序实际上从来就不和你编写的EJB直接打交道,他们之间是通过HOME/REMOTE接口来发生关系的.它负责你的BEAN的所有的吃喝拉萨睡,比如BEAN的持续化,安全性,事务管理...

EJB是一个技术规范,标准描述了构建应用组件要解决的可扩展 (Scalable)、分布式 (Distributed)、事务处理 (Transactional)、数据存储 (Persistent)、安全性 (Secure);从技术上而言并不是一种"产品"。

3.EJB应用需要运行在EJB容器中(不同于Web容器和Servlet容器):

Web容器好比电视机Servlet容器好比VCD没有VCD你可以看电视,但是有了VCD没有电视机,你从哪看起?
没有Servlet容器,你也可以用Web容器直接访问静态页面,比如安装一个apache等,但是如果要显示Jsp/Servlet,你就要安装一个Servlet容器了,但是光有Servlet容器是不够的,因为它要被解析成Html输出,所以你仍需要一个Web容器大多数Servlet容器同时提供了Web容器的功能,也就是说大多Servelt可以独立运行你的Web应用

 

EJB容器。更具有行业领域特色。他提供给运行在其中的EJB组件各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。EJB 容器提供对企业 Bean 的本地访问和远程访问。容器负责创建企业 Bean、将企业 Bean 绑定到命名服务以使其他应用程序组件可以访问企业 Bean、确保只有授权的客户机才能访问企业 Bean 的方法、将 Bean 的状态保存到持久性存储中、高速缓存 Bean 的状态以及在必要时激活或钝化 Bean

JBossEJB容器,TomcatWeb容器,一般的JBoss都已经集成了Tomcat,如果没有集成TomcatJBoss就不可以运行JspServlet

一般把具有完整的J2ee(包括EJB)功能的叫做应用服务器。

发布到EJB容器的组件只能通过JNDI来访问


4.JNDIJava Naming and Directory Interface)概述:

命名服务用于将名称和对象联系起来,从而可以用名称访问对象,即容器帮你维护对象实例,你只需使用API即可获得new好的对象实例。

JNDI结构:

二、建立EAP工程及创建数据源:

1.创建数据源

EJB工程中配置数据源并不像在使用Hibernate时再工程的配置文件中配置,而是将所需要的数据库连接串、驱动、用户名、密码等在JBoss中配置成数据源,并使用jndi-nameEJB工程联系起来,JBoss中数据源的配置:

%JBOSS_HOME%/server/default/deploymssql-ds.xml配置(由于我使用的是SQLServer:

 

2.建立EAP工程

使用MyEclipse建立EAPEnterprise Application Project)工程,包含了EJB工程和Web工程以及将两个工程进行关联的一个工程,这样就免去了分别建EJBWeb工程,然后再将EJB打包到Web工程中的繁琐。

EAP工程被打包发布到应用服务器上时,以.ear结尾(enterprise application archive)。

如下:

 

  在第一个工程中的application.xml中描述了打包成ear工程的各项属性,如下:

 

在第二个工程,EJB工程下的persistence.xml中定义了工程所访问的数据源,如下:

 

最后在浏览器的地址栏上输入http://localhost:8888/LucubrateEJB3_1Web就可以看到此项目的index.jsp页面了(我设置的端口号是8888)。

以上即为此节的内容,简单的介绍EJB和部署。

原创粉丝点击