|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。前文汇总和PDF下载:揭开J2EE集群的奥秘面纱
6EJB集群完成
EJB是J2EE手艺中主要的部分,而且EJB集群是完成J2EE集群最年夜的应战。
EJB手艺是为散布式盘算而生。它们能够在自力的服务器中运转。Web服务器组件或富客户端能够从其他的呆板经由过程尺度协定(RMI/IIOP)来会见EJB。你能够象挪用你当地Java对象的办法一样挪用远程EJB的办法。实践上,RMI/IIOP完整掩饰了你正在挪用的对象是当地的仍是远程的,这被称作当地/远程通明性。
上图显现了远程EJB的挪用机制。当客户端想利用EJB,它不克不及间接挪用,相反,客户端只能挪用一个被称为“stub”的当地对象,它饰演了到远程对象代办署理的脚色,而且有远程对象不异的接口。这个对象卖力承受当地办法挪用,而且这些挪用经由过程收集代办署理到远程EJB。这些对象在客户JVM中运转,而且晓得怎样经由过程RMI/IIOP跨过收集查找真实的对象。要懂得有关EJB更多的信息,请参考http://java.sun.com/products/ejb/
为注释EJB集群的完成,我们先看看在J2EE代码中怎样利用EJB的。为了挪用EJB,我们必要
- 在JNDI服务器中查找EJBHomestub
- 利用EJBHomestub查找或创立EJB对象,如许取得一个EJBObjectstub
- 在EJBObjectstub上挪用办法
负载平衡和生效转移能够在JNDI查找时产生,这我们已在下面论述了。在EJBstub(包含EJBHome和EJBObject)的办法挪用时,供给商接纳以下三种体例完成EJB负载平衡和生效转移。
6.1智能存根(Smartstub)
正如我们所知,客户端能够经由过程存根对象(stub)来访门远程的EJB,这个对象能够经由过程JNDI树猎取,乃至客户端大概通明地从WEB服务器高低载存根类文件。
如许存根就能够在运转期静态地用程序天生,而其类文件也不用在客户端情况的classpath或库中。(由于它是能够被下载的)
如7所示,BEAWebLogic和Jboss经由过程在存根代码中组合几种举动来完成EJB集群,而这些都是在客户端通明运转的(客户端不必要懂得这些代码)。这类手艺叫做智能存根。
智能存根的确很伶俐,它包括一组它能够会见的方针实例,能够检测这些实例的任何生效,它也包括了庞大的负载平衡和生效转移的逻辑,用来分发哀求到方针实例。并且,假如集群拓朴改动了的话(好比新增或删除服务器实例),存根能够更新它的方针实例清单来反应新的拓朴,而不必要手工从头设置。
利用智能存根完成集群有以下长处:
- 由于EJB存根运转在客户端,以是它能够节俭很多服务器资本。
- 负载平衡是在客户端代码中,而且与客户真个性命周期相干。如许就打消了负载平衡器的单点生效。假如负载平衡器生效了,就意味着客户端也生效了,这类情形是能承受的。
- 存根可静态的主动下载更新,这意味着零保护。
6.2IIOP运转期库
SunJESApplicationServer利用了另外一种办法完成EJB集群。负载平衡和生效转移逻辑是在IIOP运转库中完成的。好比,JES修正了“ORBSocketFactory”的完成,使它能撑持集群。如8所示。
“ORBSocketFactory”的修正版有完成负载平衡和生效转移的一切逻辑和算法,如许就坚持了存根洁净和小。由于是在运转库中完成的,如许就比存根的体例更简单取得体系资本。但这类体例必要在客户端运转一个特别的运转库,如许就授与其他J2EE产物举行互操纵时带来了贫苦。
6.3拦阻器代办署理
IBMWebshpere接纳了定位服务精灵(LocationServiceDaemon-LSD),它对EJB客户端饰演了拦阻器代办署理的脚色,如9所示。
<br>
9拦阻器代办署理
在这类体例中,客户端经由过程JNDI查找猎取存根,这个存根将信息路由到LSD,而不是运转了EJB的使用程序服务器。如许LSD吸收到一切出去的哀求,依据负载平衡和生效转移的战略来判别应当将它发送到哪一个服务器实例。这类体例增添的安装和保护集群的分外的办理事情。
6.4EJB的集群撑持
要挪用EJB的办法,要触及到两种存根对象,一是EJBHome接口,另外一个是EJBObject接口。这意味着EJB潜伏的必要在两层上完成在负载平衡和生效转移。
- 当客户端利用EJBHome存根创立或查找EJB对象时
- 当客户端挪用EJB对象上的办法时。
6.4.1EJBHome存根撑持集群
EJBHome接口用于在EJB容器中创立和查找EJB实例,而EJBHome存根是EJBHome接口的客户端代办署理。EJBHome接口不需保持任何客户真个形态信息。如许,来自分歧EJB容器中的不异EJBHome接口关于客户端来讲是分歧的。当客户端实行create()或find()挪用的时分,home存根依据负载平衡和生效转移算法从多个不异的服务器实例当选择一个,并将挪用发送到该服务器的home接口上。
6.4.2EJBObject存根撑持集群
当EJBHome接口创立一个EJB实例,它将前往EJBObject的存根给客户端,并让用户挪用EJB的营业办法。集群中已有一组可用的服务器实例,并在下面的部署了bean,可是不克不及将EJBObject存根对象向EJBObject接口收回挪用转发就任意一个服务器实例上,这取决于EJB的范例。
无形态会话Bean是最复杂的情形,由于不触及到形态,一切的实例都能够以为是一样的,如许对EJBObject的办法挪用可负载平衡和生效转移就任意一个服务器实例上。
集群的有形态会话Bean与无形态会话Bean有一点分歧,正如我们所知,有形态会话Bean关于客户端一连的哀求会持有形态信息。从手艺下去说,集群有形态会话Bean与集群HTTPSession是一样的。在惯例工夫,EJBObject存根将不会把哀求负载平衡到分歧的服务器实例。相反,它将胶粘到最后创立的服务器实例上,我们称这个实例为“主实例”。在实行过程当中,会话形态会从主实例备份到其他服务上往。假如主实例生效了,备份服务器将接受它。
实体Bean实质上是无形态的,只管它能够处置有形态的哀求。一切的信息都将经由过程实体Bean自己的机制备份到数据库中。如许看起来实体Bean能够象无形态会话Bean一样很简单猎取负载平衡和生效转移。但实践,实体Bean多半情形下是不负载平衡和生效转移的。依据计划形式的倡议,实体Bean被会话表面包装。如许,多半对实体Bean的会见都是历程内会话Bean经由过程当地接口完成的,而不是远程客户端。这使得负载平衡和生效转移没成心义。
来自:http://blog.csdn.net/esoftwind/archive/2006/10/20/1342387.aspx译者:ESoftWind
C#是不行的,比如说美国的航天飞船里就有java开发的程序以上是我的愚见,其实不管那种语言,你学好了,都能找到好的工作, |
|