负载均衡,作为现代网络架构中不可或缺的一环,其核心目标在于优化资源分配,提高系统可用性和响应速度,在实现负载均衡的过程中,许多人可能会疑问:是否需要编写多份代码来实现这一功能?以下将从多个角度对此进行探讨。
负载均衡的基本概念
负载均衡(Load Balancing)是一种将工作负载分配到多个计算节点上的技术,旨在提高系统整体性能和可靠性,通过合理分配请求,负载均衡可以避免单个节点过载,从而提高系统的稳定性和响应速度。
负载均衡的实现方式
负载均衡的实现方式多种多样,常见的有以下几种:
是否需要编写多份代码
硬件负载均衡器
对于硬件负载均衡器,通常不需要编写代码,厂商已经提供了相应的配置界面和API,用户只需根据需求进行配置即可。
软件负载均衡器
对于软件负载均衡器,如Nginx、HAProxy等,通常需要编写配置文件来实现负载均衡,虽然这些配置文件不是代码,但它们本质上是一种脚本,用于描述负载均衡的规则和策略。
在这些情况下,虽然不需要编写多份代码,但需要根据实际需求调整配置文件,以达到最佳效果。
云服务负载均衡
对于云服务负载均衡,如阿里云的SLB、腾讯云的CLB等,通常也不需要编写代码,用户只需在云服务平台上创建负载均衡实例,并配置相关参数即可。
负载均衡的实现方式多样,是否需要编写多份代码取决于具体的技术选型,在硬件负载均衡器和云服务负载均衡的情况下,通常不需要编写代码;而在软件负载均衡器的情况下,需要编写配置文件来实现负载均衡规则。
在实际应用中,应根据具体需求和场景选择合适的负载均衡方案,以实现高效、稳定的系统性能。
puwer-spring
1.1.1 Spring是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。 应用程序是由一组相互协作的对象组成。 而在传统应用程序开发中,一个完整的应用是由一组相互协作的对象组成。 所以开发一个应用除了要开发业务逻辑之外,最多的是关注如何使这些对象协作来完成所需功能,而且要低耦合、高内聚。 业务逻辑开发是不可避免的,那如果有个框架出来帮我们来创建对象及管理这些对象之间的依赖关系。 可能有人说了,比如“抽象工厂、工厂方法设计模式”不也可以帮我们创建对象,“生成器模式”帮我们处理对象间的依赖关系,不也能完成这些功能吗?可是这些又需要我们创建另一些工厂类、生成器类,我们又要而外管理这些类,增加了我们的负担,如果能有种通过配置方式来创建对象,管理对象之间依赖关系,我们不需要通过工厂和生成器来创建及管理对象之间的依赖关系,这样我们是不是减少了许多工作,加速了开发,能节省出很多时间来干其他事。 Spring框架刚出来时主要就是来完成这个功能。 Spring框架除了帮我们管理对象及其依赖关系,还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力,还能帮我管理最头疼的数据库事务,本身提供了一套简单的JDBC访问实现,提供与第三方数据访问框架集成(如Hibernate、JPA),与各种Java EE技术整合(如Java Mail、任务调度等等),提供一套自己的web层框架Spring MVC、而且还能非常简单的与第三方web框架集成。 从这里我们可以认为Spring是一个超级粘合平台,除了自己提供功能外,还提供粘合其他技术和框架的能力,从而使我们可以更自由的选择到底使用什么技术进行开发。 而且不管是JAVA SE(C/S架构)应用程序还是JAVA EE(B/S架构)应用程序都可以使用这个平台进行开发。 让我们来深入看一下Spring到底能帮我们做些什么? 1.1.2 Spring能帮我们做什么 Spring除了不能帮我们写业务逻辑,其余的几乎什么都能帮助我们简化开发: 一、传统程序开发,创建对象及组装对象间依赖关系由我们在程序内部进行控制,这样会加大各个对象间的耦合,如果我们要修改对象间的依赖关系就必须修改源代码,重新编译、部署;而如果采用Spring,则由Spring根据配置文件来进行创建及组装对象间依赖关系,只需要改配置文件即可,无需重新编译。 所以,Spring能帮我们根据配置文件创建及组装对象之间的依赖关系。 二、当我们要进行一些日志记录、权限控制、性能统计等时,在传统应用程序当中我们可能在需要的对象或方法中进行,而且比如权限控制、性能统计大部分是重复的,这样代码中就存在大量重复代码,即使有人说我把通用部分提取出来,那必然存在调用还是存在重复,像性能统计我们可能只是在必要时才进行,在诊断完毕后要删除这些代码;还有日志记录,比如记录一些方法访问日志、数据访问日志等等,这些都会渗透到各个要访问方法中;还有权限控制,必须在方法执行开始进行审核,想想这些是多么可怕而且是多么无聊的工作。 如果采用Spring,这些日志记录、权限控制、性能统计从业务逻辑中分离出来,通过Spring支持的面向切面编程,在需要这些功能的地方动态添加这些功能,无需渗透到各个需要的方法或对象中;有人可能说了,我们可以使用“代理设计模式”或“包装器设计模式”,你可以使用这些,但还是需要通过编程方式来创建代理对象,还是要耦合这些代理对象,而采用Spring 面向切面编程能提供一种更好的方式来完成上述功能,一般通过配置方式,而且不需要在现有代码中添加任何额外代码,现有代码专注业务逻辑。 所以,Spring 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。 三、在传统应用程序当中,我们如何来完成数据库事务管理?需要一系列“获取连接,执行SQL,提交或回滚事务,关闭连接”,而且还要保证在最后一定要关闭连接,多么可怕的事情,而且也很无聊;如果采用Spring,我们只需获取连接,执行SQL,其他的都交给Spring来管理了,简单吧。 所以,Spring能非常简单的帮我们管理数据库事务。 四、Spring还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板,来方便数据库访问。 五、Spring还提供与第三方Web(如Struts、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。 六、Spring能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。 Spring能帮我们做这么多事情,提供这么多功能和与那么多主流技术整合,而且是帮我们做了开发中比较头疼和困难的事情,那可能有人会问,难道只有Spring这一个框架,没有其他选择?当然有,比如EJB需要依赖应用服务器、开发效率低、在开发中小型项目是宰鸡拿牛刀,虽然发展到现在EJB比较好用了,但还是比较笨重还需要依赖应用服务器等。 那为何需要使用Spring,而不是其他框架呢?让我们接着往下看。 1.1.3 为何需要Spring 一 首先阐述几个概念 1、应用程序:是能完成我们所需要功能的成品,比如购物网站、OA系统。 2、框架:是能完成一定功能的半成品,比如我们可以使用框架进行购物网站开发;框架做一部分功能,我们自己做一部分功能,这样应用程序就创建出来了。 而且框架规定了你在开发应用程序时的整体架构,提供了一些基础功能,还规定了类和对象的如何创建、如何协作等,从而简化我们开发,让我们专注于业务逻辑开发。 3、非侵入式设计:从框架角度可以这样理解,无需继承框架提供的类,这种设计就可以看作是非侵入式设计,如果继承了这些框架类,就是侵入设计,如果以后想更换框架之前写过的代码几乎无法重用,如果非侵入式设计则之前写过的代码仍然可以继续使用。 4、轻量级及重量级:轻量级是相对于重量级而言的,轻量级一般就是非入侵性的、所依赖的东西非常少、资源占用非常少、部署简单等等,其实就是比较容易使用,而重量级正好相反。 5、POJO:POJO(Plain Old Java Objects)简单的Java对象,它可以包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不继承或不实现任何其它Java框架的类或接口。 6、容器:在日常生活中容器就是一种盛放东西的器具,从程序设计角度看就是装对象的的对象,因为存在放入、拿出等操作,所以容器还要管理对象的生命周期。 7、控制反转:即Inversion of Control,缩写为IoC,控制反转还有一个名字叫做依赖注入(Dependency Injection),就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。 8、Bean:一般指容器管理对象,在Spring中指Spring IoC容器管理对象。 二 为什么需要Spring及Spring的优点 ● 非常轻量级的容器:以集中的、自动化的方式进行应用程序对象创建和装配,负责对象创建和装配,管理对象生命周期,能组合成复杂的应用程序。 Spring容器是非侵入式的(不需要依赖任何Spring特定类),而且完全采用POJOs进行开发,使应用程序更容易测试、更容易管理。 而且核心JAR包非常小,Spring3.0.5不到1M,而且不需要依赖任何应用服务器,可以部署在任何环境(Java SE或Java EE)。 ● AOP:AOP是Aspect Oriented Programming的缩写,意思是面向切面编程,提供从另一个角度来考虑程序结构以完善面向对象编程(相对于OOP),即可以通过在编译期间、装载期间或运行期间实现在不修改源代码的情况下给程序动态添加功能的一种技术。 通俗点说就是把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中;比如安全,日记记录,这些都是通用的功能,我们可以把它们提取出来,然后在程序执行的合适地方织入这些代码并执行它们,从而完成需要的功能并复用了这些功能。 ● 简单的数据库事务管理:在使用数据库的应用程序当中,自己管理数据库事务是一项很让人头疼的事,而且很容易出现错误,Spring支持可插入的事务管理支持,而且无需JEE环境支持,通过Spring管理事务可以把我们从事务管理中解放出来来专注业务逻辑。 ● JDBC抽象及ORM框架支持:Spring使JDBC更加容易使用;提供DAO(数据访问对象)支持,非常方便集成第三方ORM框架,比如Hibernate等;并且完全支持Spring事务和使用Spring提供的一致的异常体系。 ● 灵活的Web层支持:Spring本身提供一套非常强大的MVC框架,而且可以非常容易的与第三方MVC框架集成,比如Struts等。 ● 简化各种技术集成:提供对Java Mail、任务调度、JMX、JMS、JNDI、EJB、动态语言、远程访问、Web Service等的集成。 Spring能帮助我们简化应用程序开发,帮助我们创建和组装对象,为我们管理事务,简单的MVC框架,可以把Spring看作是一个超级粘合平台,能把很多技术整合在一起,形成一个整体,使系统结构更优良、性能更出众,从而加速我们程序开发,有如上优点,我们没有理由不考虑使用它。 1.1.4 如何学好Spring 要学好Spring,首先要明确Spring是个什么东西,能帮我们做些什么事情,知道了这些然后做个简单的例子,这样就基本知道怎么使用Spring了。 Spring核心是IoC容器,所以一定要透彻理解什么是IoC容器,以及如何配置及使用容器,其他所有技术都是基于容器实现的;理解好IoC后,接下来是面向切面编程,首先还是明确概念,基本配置,最后是实现原理,接下来就是数据库事务管理,其实Spring管理事务是通过面向切面编程实现的,所以基础很重要,IoC容器和面向切面编程搞定后,其余都是基于这俩东西的实现,学起来就更加轻松了。 要学好Spring不能急,一定要把基础打牢,基础牢固了,这就是磨刀不误砍柴工。 1.2 Spring基础 1.2.1 Spring架构图 图 1-1 Spring架构图 核心容器:包括Core、Beans、Context、EL模块。 ● Core模块:封装了框架依赖的最底层部分,包括资源访问、类型转换及一些常用工具类。 ● Beans模块:提供了框架的基础部分,包括反转控制和依赖注入。 其中Bean Factory是容器核心,本质是“工厂设计模式”的实现,而且无需编程实现“单例设计模式”,单例完全由容器控制,而且提倡面向接口编程,而非面向实现编程;所有应用程序对象及对象间关系由框架管理,从而真正把你从程序逻辑中把维护对象之间的依赖关系提取出来,所有这些依赖关系都由BeanFactory来维护。 ● Context模块:以Core和Beans为基础,集成Beans模块功能并添加资源绑定、数据验证、国际化、Java EE支持、容器生命周期、事件传播等;核心接口是ApplicationContext。 ● EL模块:提供强大的表达式语言支持,支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从Spring 容器获取Bean,它也支持列表投影、选择和一般的列表聚合等。 AOP、Aspects模块: ● AOP模块:Spring AOP模块提供了符合 AOP Alliance规范的面向方面的编程(aspect-oriented programming)实现,提供比如日志记录、权限控制、性能统计等通用功能和业务逻辑分离的技术,并且能动态的把这些功能添加到需要的代码中;这样各专其职,降低业务逻辑和通用功能的耦合。 ● Aspects模块:提供了对AspectJ的集成,AspectJ提供了比Spring ASP更强大的功能。 数据访问/集成模块:该模块包括了JDBC、ORM、OXM、JMS和事务管理。 ● 事务模块:该模块用于Spring管理事务,只要是Spring管理对象都能得到Spring管理事务的好处,无需在代码中进行事务控制了,而且支持编程和声明性的事物管理。 ● JDBC模块:提供了一个JBDC的样例模板,使用这些模板能消除传统冗长的JDBC编码还有必须的事务控制,而且能享受到Spring管理事务的好处。 ● ORM模块:提供与流行的“对象-关系”映射框架的无缝集成,包括Hibernate、JPA、Ibatiss等。 而且可以使用Spring事务管理,无需额外控制事务。 ● OXM模块:提供了一个对Object/XML映射实现,将java对象映射成XML数据,或者将XML数据映射成java对象,Object/XML映射实现包括JAXB、Castor、XMLBeans和XStream。 ● JMS模块:用于JMS(Java Messaging Service),提供一套 “消息生产者、消息消费者”模板用于更加简单的使用JMS,JMS用于用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。 ● Web/Remoting模块:Web/Remoting模块包含了Web、Web-Servlet、Web-Struts、Web-Porlet模块。 ● Web模块:提供了基础的web功能。 例如多文件上传、集成IoC容器、远程过程访问(RMI、Hessian、Burlap)以及Web Service支持,并提供一个RestTemplate类来提供方便的Restful services访问。 ● Web-Servlet模块:提供了一个Spring MVC Web框架实现。 Spring MVC框架提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等及一套非常易用的JSP标签,完全无缝与Spring其他技术协作。 ● Web-Struts模块:提供了与Struts无缝集成,Struts1.x 和Struts2.x都支持 Test模块: Spring支持Junit和TestNG测试框架,而且还额外提供了一些基于Spring的测试功能,比如在测试Web框架时,模拟Http请求的功能。 1.2.2 典型应用场景 Spring可以应用到许多场景,从最简单的标准Java SE程序到企业级应用程序都能使用Spring来构建。 以下介绍几个比较流行的应用场景: ● 典型Web应用程序应用场景: 图1-2 web应用程序应用场景 在Web应用程序应用场景中,典型的三层架构:数据模型层实现域对象;数据访问层实现数据访问;逻辑层实现业务逻辑;web层提供页面展示;所有这些层组件都由Spring进行管理,享受到Spring事务管理、AOP等好处,而且请求唯一入口就是DispachterServlet,它通过把请求映射为相应web层组件来实现相应请求功能。 ● 远程访问应用场景: Spring能非常方便的提供暴露RMI服务,远程访问服务如Hessian、Burlap等,实现非常简单只需通过在Spring中配置相应的地址及需要暴露的服务即可轻松实现,后边会有介绍; ● EJB应用场景: Spring也可以与EJB轻松集成,后边会详细介绍。
什么是包交换技术?
是这个吗?---------------分组交换技术分组交换也称包交换,它是将用户传送的数据划分成一定的长度,每个部分叫做一个分组。 在每个分组的前面加上一个分组头,用以指明该分组发往何地址,然后由交换机根据每个分组的地址标志,将他们转发至目的地,这一过程称为分组交换。 进行分组交换的通信网称为分组交换网。 从交换技术的发展历史看,数据交换经历了电路交换、报文交换、分组交换和综合业务数字交换的发展过程。 分组交换实质上是在“存储—转发”基础上发展起来的。 它兼有电路交换和报文交换的优点。 分组交换在线路上采用动态复用技术传送按一定长度分割为许多小段的数据—分组。 每个分组标识后,在一条物理线路上采用动态复用的技术,同时传送多个数据分组。 把来自用户发端的数据暂存在交换机的存储器内,接着在网内转发。 到达接收端,再去掉分组头将各数据字段按顺序重新装配成完整的报文。 分组交换比电路交换的电路利用率高,比报文交换的传输时延小,交互性好。 -----------------------交换技术网络技术发展迅猛,以太网占据了统治地位。 为了适应网络应用深化带来的挑战,网络的规模和速度都在急剧发展,局域网的速度已从最初的10Mbit/s提高到100Mbit/s,千兆以太网技术也已得到了普遍应用。 对于用户来说,在减低成本的前提下,保证网络的高可靠性、高性能、易维护、易扩展,与采用何种组网技术密切相关;对于设备厂商来说,在保证用户网络功能实现的基础上,如何能够取得更为可观的利润,采用组网技术的优劣,成为提高利润的一个手段。 在具体的组网过程中,是使用已经日趋成熟的传统的第2层交换技术,还是使用具有路由功能的第3层交换技术,或者是使用具有高网络服务水平的第7层交换技术呢?在这些技术选择的权衡中,2层交换、3层交换和7层交换这三种技术究竟孰优孰劣,它们各自又适用于什么样的环境呢?传统的第2层交换技术2层交换技术可以识别数据帧中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口,记录在自己内部的一个MAC地址表中。 谈到交换,从广义上讲,任何数据的转发都可以叫做交换。 但是,传统的、狭义的第2层交换技术,仅包括数据链路层的转发。 目前,第2层交换技术已经成熟。 从硬件上看,第2层交换机的接口模块都是通过高速背板/总线(速率可高达几十Gbps)交换数据的,2层交换机一般都含有专门用于处理数据包转发的ASIC (Application specific Integrated Circuit)芯片,因此转发速度可以做到非常快。 2层交换机主要用在小型局域网中,机器数量在二、三十台以下,这样的网络环境下,广播包影响不大,2层交换机的快速交换功能、多个接入端口和低廉价格,为小型网络用户提供了完善的解决方案。 总之,交换式局域网技术使专用的带宽为用户所独享,极大地提高了局域网传输的效率。 可以说,在网络系统集成的技术中,直接面向用户的第2层交换技术,已得到了令人满意的答案。 具有路由功能的第3层交换技术第3层交换技术是1997年前后才开始出现的一种交换技术,最初是为了解决广播域的问题。 经过多年发展,第3层交换技术已经成为构建多业务融合网络的主要力量。 在大规模局域网中,为了减小广播风暴的危害,必须把大型局域网按功能或地域等因素划分成多个小局域网,这样必然导致不同子网间的大量互访,而单纯使用第2层交换技术,却无法实现子网间的互访。 为了从技术上解决这个问题,网络厂商利用第3层交换技术开发了3层交换机,也叫做路由交换机,它是传统交换机与路由器的智能结合。 简单地说,可以处理网络第3层数据转发的交换技术就是第3层交换技术。 从硬件上看,在第3层交换机中,与路由器有关的第3层路由硬件模块,也插接在高速背板/总线上。 这种方式使得路由模块可以与需要路由的其它模块间,高速交换数据,从而突破了传统的外接路由器接口速率的限制。 3层交换机是为IP设计的,接口类型简单,拥有很强的3层包处理能力,价格又比相同速率的路由器低得多,非常适用于大规模局域网络。 第3层交换技术到今天已经相当成熟,同时,3层交换机也从来没有停止过发展。 第3层交换技术及3层交换设备的发展,必将在更深层次上推动整个社会的信息化变革,并在整个网络中获得越来越重要的地位。 具有网络服务功能的第7层交换技术第7层交换技术通过逐层解开每一个数据包的每层封装,并识别出应用层的信息,以实现对内容的识别。 充分利用带宽资源,对互联网上的应用、内容进行管理,日益成为服务提供商关注的焦点。 如何解决传输层到应用层的问题,专门针对传输层到应用层进行管理的网络技术变得非常重要,这就是目前第7层交换技术发展的最根本原因。 简单地说,可以处理网络应用层数据转发的交换技术就是第7层交换技术。 其主要目的是在带宽应用的情况下,网络层以下不再是问题的关键,取而代之的是提高网络服务水平,完成互联网向智能化的转变。 第7层交换技术通过应用层交换机实现了所有高层网络的功能,使网络管理者能够以更低的成本,更好地分配网络资源。 从硬件上看,7层交换机将所有功能集中在一个专用的特殊应用集成电路或ASIC上。 ASIC比传统路由器的CPU便宜,而且通常分布在网络端口上,在单一设备中包括了50个ASIC,可以支持数以百计的接口。 新的ASIC允许智能交换机/路由器在所有的端口上以极快的速度转发数据,第7层交换技术可以有效地实现数据流优化和智能负载均衡。 在Internet网、Intranet网和Extranet网,7层交换机都大有施展抱负的用武之地。 比如企业到消费者的电子商务、联机客户支持,人事规划与建设、市场销售自动化,客户服务,防火墙负载均衡,内容过滤和带宽管理等。 交换技术正朝着智能化的方向演进,从最初的第2层交换发展到第3层交换,目前已经演进到网络的第7层应用层的交换。 其根本目的就是在降低成本的前提下,保证网络的高可靠性、高性能、易维护、易扩展,最终达到网络的智能化管理。
EJB是啥玩意了
您现在可能已在使用 JavaBean,但还不了解它。 如果有支持 Java 的浏览器,那么,在桌面上使用 JavaBean 就没有限制。 使用的 Web 页面可以将 bean 作为小应用程序的一部分。 您很快就会和作为浏览器可视部分的 JavaBean 交互,然后,那些 JavaBean 将与服务器上的 EJB 接口。 这种能力也可以扩展到因特网和内部网。 JavaBean 和 Server Bean(通常称为 Enterprise JavaBean (EJB))有一些基本相同之处。 它们都是用一组特性创建,以执行其特定任务的对象或组件。 它们还有从当前所驻留服务器上的容器获得其它特性的能力。 这使得 bean 的行为根据特定任务和所在环境的不同而有所不同。 这开辟了巨大商机。 因为 JavaBean 是与平台无关的,所以对于将来的解决方案,供应商可以轻易向不同用户推出其客户机方的 JavaBean,而不必创建或维护不同的版本。 这些 JavaBean 可以与执行商业功能(例如订购、信用卡处理、电子汇款、存货分配、运输等)的 EJB 配合使用。 这里有巨大潜力,而这正是组件代理(WebSphereApplication Server 企业版)设计提供的那种潜力。 JavaBean 是一种组件,它在内部有接口或有与其相关的属性,以便不同人在不同时间开发的 bean 可以询问和集成。 可以构建一个 bean,而在以后构造时将其与其它 bean 绑定。 这种过程提供了先构建,然后重复使用的方法,这就是组件的概念。 可以将这种单一应用程序部署成独立程序、ActiveX组件或在浏览器中。 JavaBean 因其外部接口(即属性接口)而与纯对象不同。 这种接口允许工具读取组件要执行的功能,将其与其它 bean 挂钩,以及将其插入其它环境。 JavaBean 设计成对单一进程而言是本地的,它们在运行时通常可视。 这种可视组件可能是按钮、列表框、图形或图表 - 但这不是必需的。 可执行组件Server Bean 或 EJB 是部署在服务器上的可执行组件或商业对象。 有一个协议允许对其进行远程访问或在特定服务器上安装或部署它们。 有一系列机制允许它们将服务安全性、事务行为、并发性(由多个客户机同时访问的能力)和持久性(其状态可以保存多久)的主要方面授权给 EJB 服务器上其所在的容器。 当安装在容器中时,它们获得各自的行为,该行为提供不同质量的服务,因此,选择正确的 EJB 服务器至关重要。 这正是 IBM WebSphere 企业版的优势所在。 EJB 是设计成运行在服务器上,并由客户机调用的非可视远程对象。 可通过多个非可视 JavaBean 构建 EJB。 它们有一个部署描述符,其目的与 JavaBean 属性相同:它是以后可由工具读取的 bean 的描述。 EJB 还独立于平台,一旦编写好,还可以在任何支持 Java 的平台(包括客户机和服务器)上使用。 因为 EJB 由诸如 IBM VisualAge for Java 这样的工具集生成,所以,它是基于服务器的对象,并用于远程调用。 它们安装在 EJB 服务器上,并象调用其它 CORBA远程对象那样获得进行调用的远程接口。 ActiveX 对象可以将 JavaBean 部署成 ActiveX 对象,虽然 EJB 的代理也可以这样做,但是,因为 ActiveX 运行在桌面上,所以,EJB 本身不能成为 ActiveX 对象。 要在与平台相关的、仅 Windows 平台上做到这一点,开发人员可以将 JavaBean 变换成 ActiveX 组件。 好处EJB 的主要好处在于:构建 bean 时,bean 开发人员可以规定需要什么类型的行为,而不必规定如何去做。 开发分为两部分:程序员开发bean,然后验证:它可与构建工具一起工作,并包括标识所需服务质量行为种类的部署描述符。 下一步,另一个程序员可以采用这个 bean,并使用读取 EJB 部署描述符的部署工具,然后将该 bean 安装到 Enterprise Java Server 上的容器中。 在第二步中,部署工具采取一些操作 - 这可能意味着生成如状态保存代码,放入事务挂钩,或执行安全性检查这样的代码。 所有这些操作由部署工具生成,bean 开发人员和部署人员可以是不同的人。 可以通过使用部署工具,将任何独立于平台的 JavaBean 改写成具有可靠服务质量、特定于平台的 EJB,以满足现有商业系统和应用程序的特定需求。 这就是 EJB 服务器对集成系统、网络和体系结构如此重要的原因所在。 EJB 与 IBM WebSphere 企业版在 IBM WebSphere 企业版中使用时,可以将 EJB 配置成被管理的商业对象。 接受它们授权服务的容器是其安装到的容器。 将 EJB 的持久性部分映射在数据或状态对象中。 EJB 服务器为 EJB 提供不同的服务质量,选择正确的 EJB 服务器可能对满足完整的商业需求至关重要。 “组件代理”功能极其健壮,该功能提供如负载均衡和支持服务器组中多台机器的高级功能。 它还有大大超出 Enterprise Java Server (EJS) 规范所倡导的系统管理功能。 因此,按照基本标准编写的 JavaBean 或 EJB 可以运行在使用“组件代理”功能的 WebSphere 企业版上,并获得那些所有的附加功能。 EJB服务器还提供独特的特性和服务质量,而且不完全相同。 IBM“组件代理”有一些强大特性 - 例如,可伸缩性,它允许开发人员将 EJB 部署到从小型系统到大型网络的不同类型服务器。 开发人员可以从小处入手,例如,在一个部门中,首先在 LAN 的 Java 服务器上部署,一旦准备好,就知道可以将在那里创建的 JavaBean 和 EJB 部署到全球网络。 然后,开发人员可以测试并熟悉这些bean,试运行,制作样本等等。 满意之后,开发人员可以通过将其移至高性能服务器,来大幅度扩大其规模。 JavaBean 和 EJB 不受任何计算机体系结构边界的限制。 它们用 Java 编写,可以运行在任何具有 Java 虚拟机的系统上,并可以使用任何 Enterprise Java Server (EJS) 来部署对象。 因此,开发人员现在可以在方便的系统上构建,以后在方便的系统上部署,而不必是同一台或同样类型的机器。 IBM WebSphere 企业版支持将商业对象部署到多台服务器。 EJB 作为商业对象集成到“组件代理”功能,并作为任何其它商业对象处理。 因此,EJB 可以连接到所选的后端系统,并执行任何所需操作,以满足其商业需求。 这就成为“组件代理”为 EJB 提供的基础设施。 通过将“组件代理”用作 EJB 服务器,开发人员将能够继续使用当前旧有系统,并将其与电子商务接口一起提供。 为使 EJB 能在 WebSphere“组件代理”环境中工作,可以使用“组件代理”部署工具将其安装在一台或多台服务器上,然后将其添加到命名服务器,以便可以全局查找到它。 任何可以访问公共命名服务器的人都可以找到它,找到其宿主,并可以在宿主上执行方法,同时创建 EJB。 这就是“代理组件”要做的事。 结束语Bean 的全部意义不只是其现有能力,更在于其可以为商业提供的有竞争力的潜在能力。 IT 设计师和应用开发人员现在可以将精力完全集中在商业逻辑,而将如事务、持久性和安全性的底层工作留给服务器。 WebSphere 的“组件代理”功能将提供所有这些(还有后端访问)和对象事务管理器。














发表评论