很多人都说EJB很难,其实EJB真的很难.
为什么这样说?
我想反问,你对EJB了解多少,EJB主要是用来做什么的,EJB是运行在什么环境下,它为什么以组件形式表现出来,J2EE的容器调用EJB的过程是怎样,如何发起结束事务,同步和并发,线程的安全等等?
你能给我解释清楚嘛?不能解答这些问题,就说明你还没有入门。
那么,首先我就来讲解一下J2EE规范。只有了解了J2EE规范你才能真正了解EJB是如何成为J2EE三大技术之首。
那么在我们学习J2EE之前,我们首先搞清楚几点。一、什么是企业级开发?
二、在企业级开发是为什么要使用组件?
三、容器和组件之间的工作方式?
四、企业级应用程序都如何调用组件? 解释:企业级开发指的是大型、运行环境复杂、业务逻辑繁琐、海量的信息处理等等。一个企业由于发展的需要会让整个企业中存在很多异构的系统。比如95年的PC,2000的奔腾,2005的IBM服务器等等,还有可能这些计算机上的操作系统不同或者说每台电脑上装有不同的系统用来完成不同工作。而J2EE架构的诞生就是要解决这些复杂的情况,并将这些企业的资源整合到一起。
哪么,怎样才能使得这些计算机能够在同一个环境下工作呢?我们这样来想一想,所有的计算机都是用来给我们处理信息的。所以系统与系统之前的交互也就是信息与信息间的交互,如果能让这些计算机上运行的系统都使用同一种公共的信息,那么资源是不是就整合到一起了?那么我们就会使用到某种组件,来帮我们提供这种服务。在J2EE的规范中我们就会使用到EJB组件。
2EE给我们提供了一套企业级开发的框架,将我们所需编写程序分解成个个企业级组件。用来给异构系统提供服务,将完整单独功能的组件组合成实现复杂逻辑的服务,通过分布式的应用能够使得多台计算机同时处理大量的数据信息。制作成组件后,不但增加了组件的重用性,同时满足J2EE规范编写出来的组件可以不依赖任何的J2EE容器。
而这些组件都对外提供一个调用的接口,外部的系统通过这些接口就可以调用实际的业务逻辑方法来处理信息。而这些外部的系统只需要满足J2EE的接口规范即可,并不需要编写世界的业务代码。并且在重用性和安全性方面也有保证。
比如:网上支付的例子,我们在淘宝上购物通过招行进行转帐,或者我们在QQ上买了QQshow需要网络支付的时候。我们是不是都是自己编写的代码去操作银行的数据库呢?显然不是,银行不会傻到这样的地步把,如果真是这样我们就可以随便更改自己账户中的RMB了。其实是招行的系统对外提供了一个转帐的接口,接口里面有一下对外暴露的方法。通过调用接口中的方法将实际需要操作的信息填充后才,传递给远程服务器来进行处理。处理完成后,招行的服务器给一个响应,这次转帐就完成了。
j2ee的体系结构:
当然,在J2EE的体系中我们还可以采用不同的架构模式来实现企业的需求。
比如使用比较传统的CS模式的程序采用2层结构即可满足系统的开发。使用应用程序客户端和服务器端的服务来进行通信即可。
当然还可以使用Applet或Html网页通过Web服务器来访问服务器来实现业务流程,这一种的模式相对来说,优势比较明显不受地域和软硬件的约束。
最后一种加入前面2中模式以外还加入了EJB容器,由EJB容器来帮我们处理业务逻辑,管理事务,提供系统的安全性。最大的好处是分布式的应用和有效的资源管理,大大加强的服务器的能力。
通过以上的一些介绍:我们了解J2EE的一些优势所在。那么就来介绍一下基本的层次结构。
客户层:主要是在客户机上运行的客户端组建,平台可以是笔记本电脑,台式机,掌上电脑和移动电话等。
Web层:web层组件是在J2EE服务器上运行。Web层主要是对客户层的请求做出处理和响应。
业务层:业务层也是在J2EE服务器上运行。主要实现应用程序的业务逻辑,服务器为它提供系统级服务,如事务管理、安全性和并发控制等等。
EIS层:主要是在EIS服务器上运行,表示企业数据信息。也就是我们常说的数据库。那么每一层都是为了系统更好的扩展而存在,每层通过封装来隐藏实现的细节,每层均向上层提供服务使得组合型的服务器会更加丰富(当然这里考虑了组件的重用性)。
J2EE组件:
说到组件,首先要介绍的是J2EE组件的组成。
J2EE应用程序是由许多不同的组件组成。但大体上可以分为三类:
第一类:EJB组件,里面包含有企业Bean(实体Bean、会话Bean和消息驱动Bean)
第二类:Web组件,里面包含JSP和Servlet
第三类:客服层组件,里面包含应用程序客户端和Applet。
企业Bean组件就是业务组件,它是在EJB服务器上运行。
里面包含核心业务和数据模型
SessionBean 就是用来提供核心业务逻辑组件
EntityBean 就是数据模型组件
Web组件提供了对请求的响应。
JSP组件 显示信息,发送请求。
Servlet组件 接受请求并调用企业Bean中的服务来处理请求给予响应。客户端组件:包括客户端应用程序,web客户端(包含HTML客户端和Applat客户端)