转自《java程序员 编程那些事儿》
3.5.3.1 EJB概念的剖析
我们先看一下,EJB的官方解释:
商务软件的核心部分是它的业务逻辑。业务逻辑抽象了整个商务过程的流程,并使用计算机语言将他们实现。
……
J2EE对于这个问题的处理方法是将业务逻辑从客户端软件中抽取出来,封装在一个组件中。这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能单纯到只负责发送调用请求和显示处理结果。在J2EE中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB(Enterprise Java Bean)组件。
这其中我们主要关注这么几点,我们来逐条剖析:
剖析1:所谓:"业务逻辑"
我们注意到在EJB的概念中主要提到的就是"业务逻辑"的封装,而这个业务逻辑到底是什么?说的那么悬乎,其实这个所谓的"业务逻辑"我们完全可以理解成执行特定任务的"类"。
剖析2:所谓:"将业务逻辑从客户端软件中抽取出来,封装在组件中……运行在一个服务器上"
既然我们知道了"业务逻辑"的概念就是执行特定任务的"类",那么,什么叫"从客户端软件中抽取出来"?其实,这个就是把原来放到客户端的"类",拿出来不放到客户端了,放到一个组件中,并将这个组件放到一个服务器上去运行。
3.5.4.1 EJB的实现技术
EJB是运行在独立服务器上的组件,客户端是通过网络对EJB对象进行调用的。在Java中,能够实现远程对象调用的技术是RMI,而EJB技术基础正是RMI。通过RMI技术,J2EE将EJB组件创建为远程对象,客户端就可以通过网络调用EJB对象了。
3.5.4.2 看看RMI是什么东东
在说RMI之前,需要理解两个名词:
对象的序列化
分布式计算与RPC
3.5.4.2.1.1 名词1:对象的序列化
对象的序列化概念:对象的序列化过程就是将对象状态转换成字节流和从字节流恢复对象。将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,或者通过网络连接将对象数据发送到另一个主机。
上面的说法有点"八股",我们不妨再用白话解释一下:对象的序列化就是将你程序中实例化的某个类的对象,比如,你自定一个类MyClass,或者任何一个类的对象,将它转换成字节数组,也就是说可以放到一个byte数组中,这时候,你既然已经把一个对象放到了byte数组中,那么你当然就可以随便处置了它了,用得最多的就是把他发送到网络上远程的计算机上了。
3.5.4.2.2 名词2:分布式计算与RPC
RPC并不是一个纯粹的Java概念,因为在Java诞生之前就已经有了RPC的这个概念,RPC是"Remote Procedure Call"的缩写,也就是"远程过程调用"。在Java之前的大多数编程语言,如,Fortran、C、COBOL等等,都是过程性的语言,而不是面向对象的。所以,这些编程语言很自然地用过程表示工作,如,函数或子程序,让其在网络上另一台机器上执行。说白了,就是本地计算机调用远程计算机上的一个函数。
3.5.4.2.3 名词3:二者结合就是RMI
RMI英文全称是"Remote Method Invocation",它的中文名称是"远程方法调用",它就是利用Java对象序列化的机制实现分布式计算,实现远程类对象的实例化以及调用的方法。说的更清楚些,就是利用对象序列化来实现远程调用,也就是上面两个概念的结合体,利用这个方法来调用远程的类的时候,就不需要编写Socket程序了,也不需要把对象进行序列化操作,直接调用就行了非常方便。
远程方法调用是一种计算机之间对象互相调用对方函数,启动对方进程的一种机制,使用这种机制,某一台计算机上的对象在调用另外一台计算机上的方法时,使用的程序语法规则和在本地机上对象间的方法调用的语法规则一样。
3.5.4.2.3.1 优点
这种机制给分布计算的系统设计、编程都带来了极大的方便。只要按照RMI规则设计程序,可以不必再过问在RMI之下的网络细节了,如:TCP和Socket等等。任意两台计算机之间的通讯完全由RMI负责。调用远程计算机上的对象就像本地对象一样方便。
RMI可将完整的对象作为参数和返回值进行传递,而不仅仅是预定义的数据类型。也就是说,可以将类似Java哈西表这样的复杂类型作为一个参数进行传递。
3.5.4.2.3.2 缺点
如果是较为简单的方法调用,其执行效率也许会比本地执行慢很多,即使和远程Socket机制的简单数据返回的应用相比,也会慢一些,原因是,其在网络间需要传递的信息不仅仅包含该函数的返回值信息,还会包含该对象序列化后的字节内容。
3.5.4.3 EJB是以RMI为基础的
通过RMI技术,J2EE将EJB组件创建为远程对象,EJB虽然用了RMI技术,但是却只需要定义远程接口而无需生成他们的实现类,这样就将RMI技术中的一些细节问题屏蔽了。
但不管怎么说,EJB的基础仍然是RMI,所以,如果你想了解EJB的原理,只要把RMI的原理搞清楚就行了。你也就弄清楚了什么时候用EJB什么时候不需要用EJB了。
3.5.5 EJB中所谓的"服务群集"
既然已经知道了,RMI是将各种任务与功能的类放到不同的服务器上,然后通过各个服务器间建立的调用规则实现分布式的运算,也就明白EJB所谓的"服务群集"的概念。
就是将原来在一个计算机上运算的几个类,分别放到其他计算机上去运行,以便分担运行这几个类所需要占用的CPU和内存资源。同时,也可以将不同的软件功能模块放到不同的服务器上,当需要修改某些功能的时候直接修改这些服务器上的类就行了,修改以后所有客户端的软件都被修改了。
3.5.7 EJB活学活用,J2EE不是必须使用EJB
通过上面小节的讲解似乎好像EJB和开发Web应用的B/S结构的系统关系并不大,其实倒也不然。我们如果把"客户端程序"理解成某一台服务器,这样也是可以被应用的,而且,如果是服务器互相之间做EJB的调用的话,也就不存在广域网带宽限制的问题了。
但是,如下情况尽量就不要使用EJB了:
1、较为简单的纯Web应用开发,不需要用EJB。
2、需要与其他服务程序配合使用的应用,但调用或返回的自定义的网络协议可以解决的应用程序,不需要使用EJB。
3、较多人并发访问的C/S结构的应用程序,尽量不要使用EJB。
分享到:
相关推荐
通过上述分析,我们可以看到EJB的工作原理涉及到了多个层次的概念和技术,包括EJB容器、客户端和服务端代理对象、远程调用技术(RMI)、网络通信(Socket)以及命名和目录服务(JNDI)。这些元素共同协作,使得EJB...
4. **EJB容器和服务器**:EJB容器是运行和管理EJB的环境,它负责EJB的生命周期管理、安全、事务处理等服务。EJB服务器则是提供EJB容器运行的平台,如Java EE应用服务器。 5. **EJB 3.0**:EJB 3.0引入了许多简化...
在本入门例子中,我们将深入理解EJB的基本概念,包括实体(Entity)、会话(Session)和消息驱动(Message-Driven)Bean,以及如何在实际项目中使用它们。 **1. EJB组件** - **实体Bean(Entity Bean)**:代表...
理解EJB容器的这些概念对于开发和部署分布式企业级应用至关重要,特别是涉及到高可用性、可扩展性和事务处理的场景。通过学习邹华教授的课程,开发者能够深入掌握EJB在分布式计算中的作用,从而更好地构建和维护复杂...
本教程将深入探讨EJB的核心概念、架构以及开发与部署流程。 ### 1. EJB概述 EJB是Java EE(Java Platform, Enterprise Edition)的一部分,它为开发可移植、安全且具有事务管理能力的企业级应用程序提供了标准框架...
EJB使用JNDI(Java Naming and Directory Interface)进行服务查找和绑定,这是一种在分布式环境中定位对象的机制。本压缩包包含了一个EJB中JNDI使用源码的例子,可以帮助开发者深入理解这两者之间的交互。 在Java ...
总之,"java源码:EJB的真实世界模型(源代码).rar"是一个宝贵的教育资源,它提供了一个实践性的平台,让我们能够深入理解EJB的工作原理,并掌握在实际项目中应用EJB的最佳实践。对于想要提升企业级Java开发能力的...
* 可扩展性:EJB 可以方便地扩展和维护,适合大型企业级应用程序。 * 可靠性:EJB 提供了强大的错误处理机制,确保应用程序的可靠性。 三、EJB 的组成 EJB 由三个组件组成: * session bean:负责处理业务逻辑,...
**EJB调用原理分析** Enterprise JavaBeans(EJB)是Java EE平台中用于构建分布式企业级应用的重要组件。EJB提供了服务器端的组件模型,允许开发者将业务逻辑封装在可重用的组件中,这些组件可以透明地运行在Java...
【Java EJB 模拟银行ATM...它展示了EJB在事务管理、安全性、远程调用等方面的优势,并为我们提供了实践这些概念的实际案例。深入理解这些知识点将有助于提升Java开发者的技能,特别是对于那些想要涉足企业级开发的人。
2. **面向对象**:Java是一种完全面向对象的语言,它支持封装、继承和多态等核心概念,这些特性使得Java能够更好地模拟现实世界的复杂结构。 3. **健壮性**:Java在设计时非常重视安全性和错误处理,采用了强类型...
EJB(Enterprise JavaBeans)和J2EE(Java 2 Platform, Enterprise Edition)是Java世界中用于构建企业级应用程序的重要技术。这篇文档“EJB_and_J2EE_arch1.pdf”很可能是探讨这两者如何协同工作,以实现高效、可...
这个压缩包中的文档很可能包括了上述所有内容的详细解释、示例代码以及最佳实践,帮助读者深入理解和掌握EJB3的核心概念和技术。通过学习这些资料,无论是准备面试、项目开发还是提升自己的Java EE技能,都能得到很...
2. **会话Bean(Session Beans)的改进**:EJB 3.0引入了无状态会话Bean和有状态会话Bean的概念,它们分别对应于无状态服务和需要维护客户端状态的服务。通过注解,开发者可以直接在Bean类上声明其类型和行为,无需...
【Java企业开发平台中的EJB技术】 EJB(Enterprise JavaBeans)是Java企业开发平台中的核心技术,主要用于构建可...EJB的原理和功能对于理解Java企业级开发的架构和设计思路至关重要,是开发大型、复杂应用的基础。
### EJB3.0与EJB2.0的对比及改进 #### 一、EJB技术简介 EJB(Enterprise JavaBeans)是Java平台的一种组件模型,主要用于开发和...通过上述内容的学习,可以帮助开发者更好地理解和掌握EJB3.0的核心概念和技术要点。
EJB技术框架主要包括以下几个核心概念: 1. **服务器(Server)**:EJB服务器负责管理和协调EJB容器,同时提供对操作系统服务及Java相关服务的访问,如通过JNDI(Java Naming and Directory Interface)访问命名空间...
- `ejb-3_0-fr-spec-ejbcore.pdf`:这部分详细阐述了EJB3.0的核心概念和实现,包括会话Bean、实体Bean以及容器服务。 - `ejb-3_0-fr-spec-persistence.pdf`:该文档专注于EJB3.0中的持久化机制,即JPA,解释了如何...
"ejb sample"是一个示例项目,它可能包含了如何使用EJB技术进行开发的基本元素和实践。下面将详细解释EJB的相关知识点。 1. **EJB类型**: EJB主要分为三种类型:会话Bean(Session Beans)、消息驱动Bean...
5. **Simplified EJB 3.0**:ejb-3_0-fr-spec-simplified.pdf可能包含了EJB 3.0的简化版,旨在使初学者更容易理解EJB的核心概念。 综上所述,EJB规范提供了一种标准的方式来构建可扩展、可靠的、基于组件的企业级...