EJB(Enterprise JavaBean),企业JavaBean。这个到底是什么东西呢?它又有什么用呢?咱们一个个的来分析。
首先来说说Enterprise吧。企业级,又是什么呢?官方界定:企业级应用是指那些为商业组织、大型企业而创建并部署的解决方案及应用。这些大型企业级应用的结构复杂,涉及的外部资源众多、事务密集、数据量大、用户数多,有较强的安全性考虑。
其实上述的概念还是比较通俗的,而且一个定义就道出了企业级的真正含义和意义。显然,当代的企业级应用决不可能是一个个相互独立的系统。在企业中,一般都会部署多个彼此连接的、相互通过不同集成层次进行交互的企业级应用,同时这些应用又都有可能与其它企业的相关应用连接,从而构成一个结构复杂的、跨越Intranet和Internet的分布式企业应用群集。
此外,作为企业级应用,其不但要有强大的功能,还要能够满足未来业务需求的变化,易于升级和维护。下面用简短的话语总结一下:
企业级应用的特点:
(1)为商业组织、大型企业创建并部署
(2)结构复杂、事务密集
(3)数据量大
(4)用户数多
(5)安全性较强
(6)不是独立的,多个交互的分布式企业应用群集
知道什么是Enterprise了,那么什么又是JavaBean呢?这个学习过Java的的朋友应该不陌生了。但是会不会出现这个迷惑,JavaBean和Java类到底有什么区别呢?他们是一个东西吗?
首先先肯定,JavaBean肯定是Java类,这时候有读者可能就问了,那怎么还要有JavaBean啊?别急,且听我慢慢道来。
原因就是:JavaBean是Java类,但是它是一种特殊的Java类。有读者又要问了,那它特殊在哪里了啊?主要是以下两点:
(1)公有的空的构造方法
(2)属性都应该有 getter setter
现在Enterprise和JavaBean都有所了解了,那么两者结合--Enterprise Java Bean到底是个什么东西呢?
用通俗的话来说:EJB就是把你编写的软件中那些需要执行制定的任务的类,不放到客户端软件上,而是给他打成包放到一个服务器上了。再简单些说:EJB就是将那些"类"放到一个服务器上,用C/S形式的软件客户端对服务器上的"类"进行调用。
放到J2EE中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB(EnterpriseJava Bean)组件。
明白什么是EJB了,那么它的具体原理又是什么呢?正如上文所提:EJB是运行在独立服务器上的组件,客户端是通过网络对EJB对象进行调用的。在Java中,能够实现远程对象调用的技术是RMI,而EJB技术基础正是RMI。通过RMI技术,J2EE将EJB组件创建为远程对象,客户端就可以通过网络调用EJB对象了。
这就又引出了一个RMI,这个又是什么呢?RMI英文全称是"RemoteMethodInvocation",它的中文名称是"远程方法调用",它就是利用Java对象序列化的机制实现分布式计算,实现远程类对象的实例化以及调用的方法。关于RMI,主要需要明白以下两个概念:
(1)对象的序列化
就是将你程序中实例化的某个类的对象,转换成字节数组,也就是说可以放到一个byte数组中,这时,我们就可以把它发送到网络上远程的计算机上了。如下图所示。
(2)分布式计算与RPC
RPC是"RemoteProcedureCall"的缩写,也就是"远程过程调用"。简单的说,就是本地计算机调用远程计算机上的一个函数。如下图所示:
合并来说,RMI是将各种任务与功能的类放到不同的服务器上,然后通过各个服务器间建立的调用规则实现分布式的运算。
根据上图,也可明白EJB中“服务群集”的概念。“服务群集”就是将原来在一个计算机上运算的几个类,分别放到其他计算机上去运行,以便分担运行这几个类所需要占用的CPU和内存资源。如下图所示:
不知道你现在对于EJB有没有了解一些了,最后再总结一下:EJB就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信。而RMI则是通过Java对象可序列化机制实现分布计算。最后服务器集群:就是通过RMI的通信,连接不同功能模块的服务器,以实现一个完整的功能。