




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
外文原文5THEBASICSOFSTATEFULSESSIONBEANSSTATEFULSESSIONBEANSARECONVERSATIONALBEANSBECAUSETHEYHOLDCONVERSATIONSWITHCLIENTSTHATSPANMULTIPLEMETHODINVOCATIONSSTATEFULSESSIONBEANSSTORECONVERSATIONALSTATEWITHINTHEBEANTHATCONVERSATIONALSTATEISSPECIFICTOAPARTICULARCLIENTTHISCHAPTERWILLTEACHYOUTHEBASICSOFWRITINGSTATEFULSESSIONBEANSWELLBEGINATTHECONCEPTUALLEVELANDQUICKLYMOVEINTOACODEEXAMPLEILLUSTRATINGSESSIONBEANDEVELOPMENTWELLWRAPUPWITHACOMPARISONOFTHESTATEFULANDSTATELESSPROGRAMMINGMODELS51CHARACTERISTICSOFSTATEFULSESSIONBEANSLETSBEGINWITHALOOKATTHECHARACTERISTICSTHATALLSTATEFULSESSIONBEANSSHARE511ACHIEVINGTHEEFFECTOFPOOLINGWITHSTATEFULBEANSIMAGINEASCENARIOWHERETHOUSANDSOFCLIENTSAREHAVINGCONVERSATIONSWITHDIFFERENTSTATEFULSESSIONBEANSRUNNINGWITHINACONTAINERLETSASSUMETHATTHECLIENTSARETYPICALCLIENTSANDTAKEALONGTIMETO“THINK”BETWEENMETHODCALLSPERHAPSACLIENTISFARAWAY,CONNECTINGFROMANOTHERCOUNTRY,ANDTHENETWORKLAGISHIGHORPERHAPSTHECLIENTREPRESENTSAHUMANINTERACTINGWITHAJAVAAPPLET,ANDTHEHUMANISDECIDINGONTHENEXTBUTTONTOCLICKTHOUSANDSOFCLIENTSIMPLYTHOUSANDSOFSTATEFULSESSIONBEANS,EACHHOLDINGCONVERSATIONALSTATEONBEHALFOFASPECIFICCLIENTAND,OFCOURSE,OUREJBCONTAINER/SERVERHASONLYAFINITEAMOUNTOFRESOURCESAVAILABLE,SUCHASMEMORY,DATABASECONNECTIONS,ANDSOCKETCONNECTIONSIFTHECONVERSATIONALSTATETHATTHEBEANSAREHOLDINGISLARGE,THECONTAINER/SERVERCOULDEASILYRUNOUTOFRESOURCESTHISWASNOTAPROBLEMWITHSTATELESSSESSIONBEANSBECAUSETHECONTAINERCOULDPOOLONLYAFEWBEANSTOSERVICETHOUSANDSOFCLIENTSWITHSTATEFULSESSIONBEANS,POOLINGISNOTASSIMPLEWHENACLIENTINVOKESAMETHODONABEAN,HEORSHEISSTARTINGACONVERSATIONWITHTHEBEAN,ANDTHECONVERSATIONALSTATESTOREDINTHEBEANMUSTBEAVAILABLEFORTHATSAMECLIENTSNEXTMETHODREQUESTTHEREFORE,THECONTAINERCANNOTEASILYPOOLBEANSANDDYNAMICALLYASSIGNTHEMTOHANDLEARBITRARYCLIENTMETHODREQUESTS,SINCEEACHBEANISSTORINGSTATEONBEHALFOFAPARTICULARCLIENTBUTWESTILLNEEDTOACHIEVETHEEFFECTOFPOOLINGFORSTATEFULSESSIONBEANS,SOTHATWECANCONSERVERESOURCESANDENHANCETHEOVERALLSCALABILITYOFTHESYSTEMTHISPROBLEMSHOULDSOUNDQUITEFAMILIARTOOPERATINGSYSTEMSGURUSWHENEVERYOURUNANAPPLICATIONONACOMPUTER,YOUHAVEONLYAFIXEDAMOUNTOFPHYSICALMEMORYINWHICHTORUNTHEOPERATINGSYSTEMSTILLMUSTPROVIDEAWAYFORMANYAPPLICATIONSTORUN,EVENIFTHEAPPLICATIONSTAKEUPMOREAGGREGATEMEMORYTHANISAVAILABLEPHYSICALLYTOPROVIDEFORTHIS,OPERATINGSYSTEMSUSEYOURHARDDISKASANEXTENSIONOFPHYSICALMEMORYTHISEFFECTIVELYEXTENDSTHEAMOUNTOFVIRTUALMEMORYTHATYOURSYSTEMHASWHENANAPPLICATIONGOESIDLE,ITSMEMORYCANBESWAPPEDOUTFROMPHYSICALMEMORYANDONTOTHEHARDDISKWHENTHEAPPLICATIONBECOMESACTIVEAGAIN,ANYNEEDEDDATAISSWAPPEDINFROMTHEHARDDISKANDINTOPHYSICALMEMORYTHISTYPEOFSWAPPINGHAPPENSVERYOFTENWHENSWITCHINGBETWEENAPPLICATIONSCALLEDCONTEXTSWITCHINGEJBCONTAINERSEXPLOITTHISVERYPARADIGMTOCONSERVESTATEFULSESSIONBEANRESOURCESTOLIMITTHENUMBEROFSTATEFULSESSIONBEANINSTANCESINMEMORY,THECONTAINERCANSWAPOUTASTATEFULBEAN,SAVINGITSCONVERSATIONALSTATETOAHARDDISKOROTHERSTORAGETHISISCALLEDPASSIVATIONAFTERPASSIVATINGASTATEFULBEAN,THECONVERSATIONALSTATEISSAFELYSTOREDAWAY,ALLOWINGRESOURCESSUCHASMEMORYTOBERECLAIMEDWHENTHEORIGINALCLIENTINVOKESAMETHOD,THEPASSIVATEDCONVERSATIONALSTATEISSWAPPEDINTOABEANTHISISCALLEDACTIVATIONTHISBEANNOWRESUMESTHECONVERSATIONWITHTHEORIGINALCLIENTNOTETHATTHEBEANTHATRECEIVESTHEACTIVATEDSTATEMAYNOTBETHEORIGINALBEANINSTANCEBUTTHATSALLRIGHTBECAUSETHEINSTANCEISRESUMINGITSCONVERSATIONFROMTHEPOINTWHERETHEORIGINALINSTANCEWASPASSIVATEDTHUS,EJBDOESINDEEDSUPPORTTHEEFFECTOFPOOLINGSTATEFULSESSIONBEANSONLYAFEWINSTANCESCANBEINMEMORYWHENTHEREAREACTUALLYMANYCLIENTSBUTTHISPOOLINGEFFECTDOESNOTCOMEFORFREETHEPASSIVATION/ACTIVATIONSTEPSCOULDENTAILANI/OBOTTLENECKCONTRASTTHISTOSTATELESSSESSIONBEANS,WHICHAREEASILYPOOLEDBECAUSETHEREISNOSTATETOSAVESOHOWDOESTHECONTAINERDECIDEWHICHBEANSTOACTIVATEANDWHICHBEANSTOPASSIVATETHEANSWERISSPECIFICTOEACHCONTAINERMOSTCONTAINERSWILLEMPLOYALEASTRECENTLYUSEDLRUPASSIVATIONSTRATEGY,WHICHSIMPLYMEANSTOPASSIVATETHEBEANTHATHASBEENCALLEDTHELEASTRECENTLYTHISISAGOODALGORITHMBECAUSEREMOTECLIENTSHAVETHEHABITOFDISCONNECTINGFROMTHENETWORK,LEAVINGBEANSSTRANDEDWITHOUTACLIENT,READYTOBEPASSIVATEDIFABEANHASNTBEENINVOKEDINAWHILE,THECONTAINERWILLWRITEITTODISKPASSIVATIONCANOCCURATANYTIME,SOLONGASABEANISNOTINVOLVEDINAMETHODCALLITSUPTOTHECONTAINERTODECIDEWHENPASSIVATIONMAKESSENSENOTETHATTHEREISONEEXCEPTIONTOTHISRULEANYBEANINVOLVEDINATRANSACTIONSEECHAPTER10CANNOTBEPASSIVATEDUNTILTHETRANSACTIONCOMPLETESTOACTIVATEBEANS,MOSTCONTAINERSWILLUSUALLYUSEAJUSTINTIMEALGORITHMJUSTINTIMEMEANSTHATBEANSSHOULDBEACTIVATEDONDEMAND,ASCLIENTREQUESTSCOMEINIFACLIENTREQUESTCOMESINBUTTHATCLIENTSCONVERSATIONHASBEENPASSIVATED,THECONTAINERWILLACTIVATETHEBEANONDEMAND,READINGTHEPASSIVATEDSTATEBACKINTOMEMORYINGENERAL,PASSIVATIONANDACTIVATIONARENOTUSEFULFORSTATELESSSESSIONBEANSSTATELESSBEANSDONOTHAVEANYSTATETOPASSIVATE/ACTIVATE,ANDSOSTATELESSBEANSCANSIMPLYBEDESTROYEDARBITRARILYBYTHECONTAINERPASSIVATION/ACTIVATIONALSOAPPLIESTOENTITYBEANS,WHICHWELLLEARNABOUTINCHAPTERS79PASSIVATETHEBEANTHATHASBEENCALLEDTHELEASTRECENTLYTHISISAGOODALGORITHMBECAUSEREMOTECLIENTSHAVETHEHABITOFDISCONNECTINGFROMTHENETWORK,LEAVINGBEANSSTRANDEDWITHOUTACLIENT,READYTOBEPASSIVATEDIFABEANHASNTBEENINVOKEDINAWHILE,THECONTAINERWILLWRITEITTODISKPASSIVATIONCANOCCURATANYTIME,SOLONGASABEANISNOTINVOLVEDINAMETHODCALLITSUPTOTHECONTAINERTODECIDEWHENPASSIVATIONMAKESSENSENOTETHATTHEREISONEEXCEPTIONTOTHISRULEANYBEANINVOLVEDINATRANSACTIONSEECHAPTER10CANNOTBEPASSIVATEDUNTILTHETRANSACTIONCOMPLETESTOACTIVATEBEANS,MOSTCONTAINERSWILLUSUALLYUSEAJUSTINTIMEALGORITHMJUSTINTIMEMEANSTHATBEANSSHOULDBEACTIVATEDONDEMAND,ASCLIENTREQUESTSCOMEINIFACLIENTREQUESTCOMESINBUTTHATCLIENTSCONVERSATIONHASBEENPASSIVATED,THECONTAINERWILLACTIVATETHEBEANONDEMAND,READINGTHEPASSIVATEDSTATEBACKINTOMEMORYINGENERAL,PASSIVATIONANDACTIVATIONARENOTUSEFULFORSTATELESSSESSIONBEANSSTATELESSBEANSDONOTHAVEANYSTATETOPASSIVATE/ACTIVATE,ANDSOSTATELESSBEANSCANSIMPLYBEDESTROYEDARBITRARILYBYTHECONTAINERPASSIVATION/ACTIVATIONALSOAPPLIESTOENTITYBEANS,WHICHWELLLEARNABOUTINCHAPTERS79512THERULESGOVERNINGCONVERSATIONALSTATEASWEHAVESAID,STATEFULSESSIONBEANSHOLDCONVERSATIONALSTATEONBEHALFOFONECLIENTLETSDEFINETHATSTATEABITMORERIGOROUSLYITSIMPORTANTTOKNOWTHERULESFORSPECIFYINGCONVERSATIONALSTATE,SOTHATTHECONTAINERWILLPASSIVATEANDACTIVATEPROPERLYTHECONVERSATIONALSTATEOFABEANFOLLOWSTHERULESLAIDOUTBYJAVAOBJECTSERIALIZATIONSEEAPPENDIXAWHENACONTAINERPASSIVATESABEAN,ITUSESOBJECTSERIALIZATIONORANEQUIVALENTPROTOCOLTOCONVERTTHEBEANSCONVERSATIONALSTATEINTOABITBLOBITCANTHENWRITETHATBLOBOUTTOSTORAGEONCETHEBEANISWRITTENTOSTORAGE,THEMEMORYISAVAILABLETOBEFREEDBYTHEGARBAGECOLLECTORACTIVATIONREVERSESTHEPROCESSASERIALIZEDBLOBTHATHADBEENWRITTENTOSTORAGEISREADBACKINTOMEMORYANDCONVERTEDTOINMEMORYBEANDATAWHATMAKESTHISWHOLEPROCESSWORKISTHEJAVAXEJBENTERPRISEBEANINTERFACEEXTENDSJAVAIOSERIALIZABLE,ANDEVERYENTERPRISEBEANCLASSINDIRECTLYIMPLEMENTSTHISINTERFACEMORECONCRETELY,EVERYMEMBERVARIABLEINABEANISCONSIDEREDTOBEPARTOFTHEBEANSCONVERSATIONALSTATEIFTHEFOLLOWINGAPPLY_THEMEMBERVARIABLEISANONTRANSIENTPRIMITIVETYPE,OR_THEMEMBERVARIABLEISANONTRANSIENTJAVAOBJECTEXTENDSJAVALANGOBJECTFOREVERYJAVAOBJECTTHATSPARTOFABEANSCONVERSATIONALSTATE,THEPREVIOUSALGORITHMISREAPPLIEDRECURSIVELYONTHOSEOBJECTSTHUS,OBJECTSERIALIZATIONCONSTRUCTSANENTIREGRAPHOFDATAREFERREDTOBYTHEMAINBEANYOUSHOULDNOTETHATWHILEYOURBEANSMUSTFOLLOWTHERULESFOROBJECTSERIALIZATION,THEEJBCONTAINERITSELFDOESNOTNECESSARILYNEEDTOUSETHEDEFAULTSERIALIZATIONPROTOCOLITCOULDUSEACUSTOMPROTOCOLFORTHIS,TOALLOWFLEXIBILITYANDDIFFERENTIATIONBETWEENCONTAINERVENDORS513ACTIVATION/PASSIVATIONCALLBACKSLETSNOWLOOKATWHATACTUALLYHAPPENSTOYOURBEANDURINGPASSIVATIONANDACTIVATIONWHENANEJBCONTAINERPASSIVATESABEAN,THECONTAINERWRITESTHEBEANSCONVERSATIONALSTATETOSECONDARYSTORAGE,SUCHASAFILEORDATABASETHECONTAINERINFORMSTHEBEANTHATITSABOUTTOPERFORMPASSIVATIONBYCALLINGTHEBEANSREQUIREDEJBPASSIVATECALLBACKMETHODEJBPASSIVATEISAWARNINGTOTHEBEANTHATITSHELDCONVERSATIONALSTATEISABOUTTOBESWAPPEDOUTITSIMPORTANTTHATTHECONTAINERINFORMTHEBEANUSINGEJBPASSIVATESOTHATTHEBEANCANRELINQUISHHELDRESOURCESTHESEHELDRESOURCESINCLUDEDATABASECONNECTIONS,OPENSOCKETS,OPENFILES,OROTHERRESOURCESTHATDONOTMAKESENSETOBESAVEDTODISKORCANNOTBETRANSPARENTLYSAVEDUSINGOBJECTSERIALIZATIONTHEEJBCONTAINERCALLSTHEEJBPASSIVATEMETHODTOGIVETHEBEANACHANCETORELEASETHESERESOURCESORDEALWITHTHERESOURCESASTHEBEANSEESFITONCETHECONTAINERSEJBPASSIVATECALLBACKMETHODINTOYOURBEANISCOMPLETE,YOURBEANMUSTBEINASTATESUITABLEFORPASSIVATIONTHISISSHOWNINFIGURE51THEEXACTOPPOSITEPROCESSOCCURSDURINGTHEACTIVATIONPROCESSHERE,THESERIALIZEDCONVERSATIONALSTATEISREADBACKINTOMEMORY,ANDTHECONTAINERRECONSTRUCTSTHEINMEMORYSTATEUSINGOBJECTSERIALIZATIONORTHEEQUIVALENTTHECONTAINERTHENCALLSTHEBEANSREQUIREDEJBACTIVATEMETHODEJBACTIVATEGIVESTHEBEANACHANCETORESTORETHEOPENRESOURCESITRELEASEDDURINGEJBPASSIVATETHISENTIREPROCESSISSHOWNINFIGURE52DOYOUHAVETOWORRYABOUTIMPLEMENTINGEJBPASSIVATEANDEJBACTIVATEPROBABLYNOT,UNLESSYOUAREUSINGOPENRESOURCES,SUCHASSOCKETCONNECTIONSORDATABASECONNECTIONS,THATMUSTBEREESTABLISHEDAFTERACTIVATIONINMOSTCASES,YOUCANSIMPLYLEAVETHESEMETHODSEMPTY514ASIMPLESTATEFULSESSIONBEANLETSPUTOURSTATEFULSESSIONBEANKNOWLEDGETOUSEBYPROGRAMMINGASIMPLESTATEFULBEANOURBEANWILLBEACOUNTERBEAN,ANDITWILLSIMPLYBERESPONSIBLEFORCOUNTINGUPONEBYONETHECURRENTCOUNTWILLBESTOREDWITHINTHEBEAN,ANDITWILLINCREMENTASCLIENTREQUESTSARRIVETHUS,OURBEANWILLBESTATEFUL,ANDITWILLHOLDAMULTIMETHODCONVERSATIONWITHAPARTICULARCLIENTTHECOUNTBEANSREMOTEINTERFACEFIRST,LETSDEFINEOURBEANSREMOTEINTERFACETHECODEISSHOWNINSOURCE51OURREMOTEINTERFACEDEFINESASINGLEBUSINESSMETHODCOUNTWHICHWEWILLIMPLEMENTINTHEENTERPRISEBEANCLASSTHECOUNTBEANOURBEANIMPLEMENTATIONHASONEBUSINESSMETHOD,COUNT,WHICHISRESPONSIBLEFORINCREMENTINGANINTEGERMEMBERVARIABLE,CALLEDVALTHECONVERSATIONALSTATEISTHEVALMEMBERVARIABLEWESHOWTHECODEFOROURCOUNTERBEANINSOURCE52HEREARESOMETHINGSTONOTICEABOUTOURBEAN_THEBEANIMPLEMENTSJAVAXEJBSESSIONBEANDEFINEDINCHAPTER3THISMEANSTHEBEANMUSTDEFINEALLMETHODSINTHESESSIONBEANINTERFACEINDEED,BYLOOKINGATTHEBEAN,YOUCANSEEWEVEDEFINEDTHEMBUTKEPTTHEMFAIRLYTRIVIAL_OUREJBCREATEINITIALIZATIONMETHODTAKESAPARAMETER,VALTHISISINSTARKCONTRASTTOSTATELESSSESSIONBEANS,WHICHNEVERTAKEPARAMETERSINEJBCREATEOURINITIALIZATIONMETHODISRESPONSIBLEFORBEGINNINGACONVERSATIONWITHTHECLIENTITUSESVALASTHESTARTINGSTATEOFTHECOUNTER_THEVALMEMBERVARIABLEOBEYSTHERULESFORCONVERSATIONALSTATEBECAUSEITISSERIALIZABLETHUS,ITWILLLASTACROSSMETHODCALLS,ANDITWILLAUTOMATICALLYBEPRESERVEDDURINGPASSIVATION/ACTIVATIONTHECOUNTBEANSHOMEINTERFACETOCOMPLETEOURSTATEFULBEANCODE,WEMUSTDEFINEAHOMEINTERFACETHEHOMEINTERFACEWILLDETAILHOWTOCREATEANDDESTROYOURCOUNTEJBOBJECTTHECODEFOROURHOMEINTERFACEISINSOURCE53BECAUSEWEIMPLEMENTJAVAXEJBEJBHOME,OURHOMEINTERFACEGETSTHEREMOVEDESTROYMETHODFORFREEPUBLICVOIDEJBCREATEINTVALTHROWSCREATEEXCEPTIONTHISVALVALSYSTEMOUTPRINTLN“EJBCREATE“PUBLICVOIDEJBREMOVESYSTEMOUTPRINTLN“EJBREMOVE“PUBLICVOIDEJBACTIVATESYSTEMOUTPRINTLN“EJBACTIVATE“PUBLICVOIDEJBPASSIVATESYSTEMOUTPRINTLN“EJBPASSIVATE“PUBLICVOIDSETSESSIONCONTEXTSESSIONCONTEXTCTXSOURCE52COUNTBEANJAVACONTINUEDTHECOUNTBEANSDEPLOYMENTDESCRIPTORNOWTHATWEVEGOTALLOURJAVAFILESFOROURBEAN,WENEEDTODEFINETHEDEPLOYMENTDESCRIPTORTOIDENTIFYTHEBEANSSETTINGSTOTHECONTAINERTHEDEPLOYMENTDESCRIPTORSETTINGSWEUSEARELISTEDINTABLE51NOTICETHATWEVEADDEDACONTAINERSPECIFICDEPLOYMENTDESCRIPTORSETTING,“MAXBEANSLOADEDATANYTIME”NOTALLCONTAINERSWILLSUPPORTTHISTHEBEAWEBLOGICSERVERWETESTEDAGAINSTDOESWEARERESTRICTINGTHEMAXIMUMNUMBEROFBEANSLOADEDSOTHATWECANFORCETHEEJBCONTAINERTOPASSIVATEANDACTIVATEOURBEANSOURSTRATEGYWILLBETOLOADTHREEBEANSATONCE,THUSFORCINGTHECONTAINERTOPASSIVATEINORDERTOREDUCETHENUMBEROFBEANSINMEMORYALSONOTICETHATOURBEANSSTATEFULNATUREISDEFINEDDECLARATIVELYINTHEDEPLOYMENTDESCRIPTORWENEVERINTRODUCETHENOTIONOFABEANBEINGSTATEFULINTHEBEANCODEITSELFTHISALLOWSUSTOEASILYSWITCHFROMTHESTATEFULTOSTATELESSPARADIGMANDBACKTHECOUNTBEANSENVIRONMENTPROPERTIESTHISDEMONSTRATIONBEANISQUITESIMPLE,SOWEDONOTUSEENVIRONMENTPROPERTIESTOCUSTOMIZETHEBEANONDEPLOYMENTCHAPTER6DEMONSTRATESBEANSWITHPROPERTIESFILESTHECOUNTBEANSMANIFESTFILE,EJBJARFILE,ANDDEPLOYMENTTOCOMPLETEOURCOMPONENT,WENEEDTOWRITEAMANIFESTFILEFORTHEEJBJARFILETHEJARSMANIFESTISSTRAIGHTFORWARDANDNODIFFERENTREALLYFROMTHEONEWEUSEDFOROUR“HELLO,WORLD”BEANINCHAPTER4THEGENERATIONOFANEJBJARFILEISSIMILARTOOUR“HELLO,WORLD”EXAMPLEONCEWEGENERATETHEEJBJARFILE,WEMUSTDEPLOYOURBEANINANEJBCONTAINERTOTESTITOUTTHISSTEPVARIESWIDELYFROMCONTAINERTOCONTAINERIFYOUREUSINGTHEBEASWEBLOGICSERVER,TAKEALOOKATTHEMAKEFILEONTHEINCLUDEDCDROMFORTHISDEPLOYMENTSTEPIFYOUHAVEADIFFERENTPREFERREDCONTAINERVENDOR,CONSULTYOURVENDORSPRODUCTDOCUMENTATIONTOSAVESPACE,INFUTUREEXAMPLESWELLCONSIDERTHATMANIFESTGENERATION,EJBJARFILEGENERATION,ANDBEANDEPLOYMENTAREIMPLIEDSTEPS中文翻译5有状态会话BEAN有状态会话BEAN是有会话状态的BEAN,因为它们与那些作用范围广,多重的方法的客户始终保持会话状态。有状态会话BEAN通过BEAN始终保持它们的会话状态。这个会话状态对于特殊唯一的客户来说是特殊和唯一的,也就是说一个客户有它相对应的会话状态。这一章我们将向大家介绍有状态会话BEAN的基础和编写,我们将在概念上和代码例子上阐述会话BEAN的发展上开始我们的学习,我们还会列举一些有状态会话BEAN的项目模型。51有状态会话BEAN的特点让我们开始学习所有有状态会话BEAN的独特之处511完成达到有状态会话BEAN的积累的努力和影响让我们想象一个特定的情节,有成千个客户正在用各不相同的有状态会话BEAN与容器保持会话状态,让我们来假设一下,这些客户端上的都是典型的客户,并且它们花费了很长时间来考虑关于方法的调用。也许对于一个准备连接到另一个国家,并且这个国家的网络延迟很高的客户来说有点遥远。又或者一个客户描述了一个通过JAVA程序互相作用的人,并且这个人正准备在下一个按击中点击。成千上万的客户就意味着提供了相同数量的有状态的会话BEAN,每一个保持的会话状态都作用于一个特殊的客户,并且,当然,我们的EJB容器/服务器有数量有限的可用资源,比如内存,数据库。如果这个通过BEAN保持的会话状态过于庞大的话,那么我们的容器/服务器将会很容易的从仅有的资源中溢出,对于无状态会话BEAN来说这不能算是个问题,因为在五状态会话BEAN中,容器会积累一定数量的BEAN用来服务成千上万的客户。但对于有状态会话BEAN来说,这可不是个轻松的工作,当一个客户在一个BEAN中调用了一个方法,他或者她就会通过BEAN启动了会话,并且这个保存在BEAN中的会话状态必须对同一个客户的下一个方法请求也是有效的。所以说,容器不能轻松的积累相应的BEAN类并且动态的分配它们进行武断的操作用来满足客户的方法请求,直到每一个客户的BEAN都保存了相应的状态,这样我们就能保存我们的资源并且提高了整个系统的可运行性。这个问题应该听起来与操作系统的问题很相似。无论何时你在一个电脑上运行一个应用程序,你都会需要一定数量的物理内存来运行它,操作系统仍然必须为应用程序的运行提供一个路径,即使这个应用程序占用的总资源比可用资源还多。为了保证这些,操作系统将会使用我们的硬盘上的资源作为物理内存资源的一中扩充。PAGE1这样就有效的扩充了你的操作系统的虚拟内存资源当一个应用程序处于空闲状态,系统的内存就能够从物理内存和硬盘中交换出来。当一个应用程序再一次开始运行的时候,如何必须的数据都会从硬盘和物理内存中被读出,这种类型的交换在当系统选择两个不同的应用程序的时候应用的非常广泛。EJB容器开发了这种模式用来保存有状态会话BEAN的资源。为了限制在内存中有状态会话BEAN的数量,容器会交换出一个有状态的BEAN,将这个会话状态保存在硬盘上或者别存储模式中,这被称之为钝化。在钝化了一个有状态BEAN之后,这个会话状态将会保存的非常安全,并且允许类似于内存之类的资源进行回收,当最原始的客户调用了一个方法,这个钝化的会话状态将会被交换到一个BEAN中,这被称之为激活。这时这个BEAN将会和最原始的客户重新建立会话关系。我们应该注意到,这个接受到激活状态的BEAN也许并不是最原始的那个BEAN。但是这没有关系,因为我们重新建立会话的这个点是当这个实例被钝化了。这样说来,EJB的确有支持积累有状态会话BEAN的特点。事实上当有很多客户的时候只有数量有限的一些实例能够保存在内存中,但是这个积累的特点并不是没有任何代价的,激活和钝化这些过程将会给I/O留下一些后遗症,和无状态会话BEAN相比,无状态会话BEAN更容易积累,因为它们不需要保持会话的状态。那么容器如何判断哪些BEANS需要钝化,哪些BEANS需要激活呢对于每一个容器来说,答案都是特殊的明确的,大多数容器将会选择钝化,就是说钝化那些最近没有被调用的BEAN,这是一个很好的算法,因为那些偏远的客户没有那种经常连接到网络的习惯,留下那些陷入困境的没有客户的BEANS,准备好进行钝化,如果一个BEAN在一段时间内都没有被调用,那么容器将会把它写入硬盘。钝化可以发生在任何时候,是否会在一个方法调用的时候被调用,这就要取决于容器认为什么时候钝化比较有意义,我们应该注意到对于这条规则有一个例外存在,任何在事务中被调用的BEAN都不可以被钝化,直到这个事务完全结束为止。为了激活BEANS类,大部分容器都会用一种名为JUSTINTIME的算法,这个算法的意思是激活BEANS的数量应该取决于需求量,比如接受到客户的需求。如果接受到一个客户的请求,但是这个客户的会话状态已经被钝化,那么容器将会按需求进行钝化,将钝化的会话状态重新读入到内存中。通常来说,钝化和激活对于无状态会话BEAN来说没有很明显的用处,因为无状态的会话BEAN没有需要钝化或者激活的会话状态,所以无状态会话BEAN可以很容易的被容器撤销,钝化和激活同时也提供了实体BEAN,我们将在79章进行深入学习。512覆盖会话状态的规则就像我们之前已经说过的,有状态会话BEAN为固定的客户保持相应的会话状态,让我们重新更加深入的定义状态这个概念,了解为了详细说明会话状态而制定的规则是很重要的,这样容器将会更适当进行钝化和激活一个BENA的会话状态遵循JAVA程序的规则。当一个容器将一个BEAN进行钝化,它利用对象集合来将BEAN的会话状态转变成一些BIT。它也能够将这些状态转变成存储内容。一旦BEAN被写入到要存储的路径中,那么这些内存的资源将会被垃圾回收器释放。激活执行的是和上述相反的操作,一段已经被写进的连续不断的内容将会被重新读进内存中并且更改在内存中的BEAN数据。保证这些工作能顺利完成的是JAVAXEJBENTERPRISEBEAN接口,并且每一个企业级的BEAN类都间接的继承这个接口。更加具体的是,在以下条件成立的情况下,每一个在BEAN中的成员变量都被认为是BEAN的会话状态的一个组成部分。每一个成员变量的属性都是私有的。每一个成员变量都是一个JAVA对象(继承于JAVALANGOBJECT。对于每一个隶属于BEAN的会话状态的JAVA对象来说,之前的那些算法是在这些对象上进行了再一次的递归,如此说来,集合对象构造了一个完整的数据提交到主干BEAN的图表。我们应该注意到在我们的BEAN必须遵循集合对象的这些规则的时候,EJB的容器本身没有必要使用这个默认的集合协议;它可以为此使用一个自定义的协议,用来承受不同容器使用者之间的反复和不同。513钝化和激活的调用现在让我们来观察一下在你的BEAN进行钝化和激活的时候到底发生了什么。容器将BEAN的会话状态写到二级存储中,例如一个文件或者数据库中。容器通告这个BEAN,这个BEAN准备用BEAN的EJBPASSIVATE方法进行钝化。EJBPASSIVATE对那些保持会话状态并将会被交换出的BEAN来说是一个警告。对于BEAN来说,容器利用EJBPASSIVATE方法对其进行警告是非常重要的,这样这些BEAN就能够选择放弃持有这些资源。这些资源包括数据库的连接,开源的文件,或者一些其它的对节约硬盘资源或者不能节约对象集合毫无意义的资源。EJB的容器调用这个EJBPASSIVATE方法以保证给这些BEAN一个释放这些资源或者对他们进行处理的机会。一旦在你的BEAN中容器的这些EJBPASSIVATE方法调用完成了,那么你的BEAN就必须
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管道泵培训课件
- 本科毕业论文的选题
- 中国人民大学工商管理学硕
- 青创赛培训课件
- 学科培训英语课件
- 勤洗手爱健康美术课件
- 糖尿病妊娠护理
- 土壤环境评价导则培训
- 一建培训机构课件
- 幼教活动设计开题报告
- 数字供应链对营运资金周转效率的影响分析
- 轻型卒中临床诊疗中国专家共识要点(2024年)解读课件
- 2022联合国电子政务调查报告(中文版)
- 国家开放大学《管理英语4》期末机考题库
- DeepSeek在银行业务场景的应用
- 居家适老化改造指导手册(2025年版)
- 炊事员培训试题及答案
- 模板包清工合同协议
- 2025年安全月主题宣贯课件
- 2024年山东夏季高中学业水平合格考地理试卷真题(含答案)
- 数字经济与低空产业发展:赋能机制与治理策略
评论
0/150
提交评论