翻译文献-stateless session beans的基础_第1页
翻译文献-stateless session beans的基础_第2页
翻译文献-stateless session beans的基础_第3页
翻译文献-stateless session beans的基础_第4页
翻译文献-stateless session beans的基础_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

外文原文THEBASICSOFSTATEFULSESSIONBEANSSTATEFULSESSIONBEANSARECONVERSATIONALBEANSBECAUSETHEYHOLDCONVERSATIONSWITHCLIENTSTHATSPANMULTIPLEMETHODINVOCATIONSSTATEFULSESSIONBEANSSTORECONVERSATIONALSTATEWITHINTHEBEANTHATCONVERSATIONALSTATEISSPECIFICTOAPARTICULARCLIENTTHISCHAPTERWILLTEACHYOUTHEBASICSOFWRITINGSTATEFULSESSIONBEANSWELLBEGINATTHECONCEPTUALLEVELANDQUICKLYMOVEINTOACODEEXAMPLEILLUSTRATINGSESSIONBEANDEVELOPMENTWELLWRAPUPWITHACOMPARISONOFTHESTATEFULANDSTATELESSPROGRAMMINGMODELSCHARACTERISTICSOFSTATEFULSESSIONBEANSLETSBEGINWITHALOOKATTHECHARACTERISTICSTHATALLSTATEFULSESSIONBEANSSHAREACHIEVINGTHEEFFECTOFPOOLINGWITHSTATEFULBEANSIMAGINEASCENARIOWHERETHOUSANDSOFCLIENTSAREHAVINGCONVERSATIONSWITHDIFFERENTSTATEFULSESSIONBEANSRUNNINGWITHINACONTAINERLETSASSUMETHATTHECLIENTSARETYPICALCLIENTSANDTAKEALONGTIMETO“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,WHICHWELLLEARNABOUTINCHAPTERS79THERULESGOVERNINGCONVERSATIONALSTATEASWEHAVESAID,STATEFULSESSIONBEANSHOLDCONVERSATIONALSTATEONBEHALFOFONECLIENTLETSDEFINETHATSTATEABITMORERIGOROUSLYITSIMPORTANTTOKNOWTHERULESFORSPECIFYINGCONVERSATIONALSTATE,SOTHATTHECONTAINERWILLPASSIVATEANDACTIVATEPROPERLYTHECONVERSATIONALSTATEOFABEANFOLLOWSTHERULESLAIDOUTBYJAVAOBJECTSERIALIZATIONSEEAPPENDIXAWHENACONTAINERPASSIVATESABEAN,ITUSESOBJECTSERIALIZATIONORANEQUIVALENTPROTOCOLTOCONVERTTHEBEANSCONVERSATIONALSTATEINTOABITBLOBITCANTHENWRITETHATBLOBOUTTOSTORAGEONCETHEBEANISWRITTENTOSTORAGE,THEMEMORYISAVAILABLETOBEFREEDBYTHEGARBAGECOLLECTORACTIVATIONREVERSESTHEPROCESSASERIALIZEDBLOBTHATHADBEENWRITTENTOSTORAGEISREADBACKINTOMEMORYANDCONVERTEDTOINMEMORYBEANDATAWHATMAKESTHISWHOLEPROCESSWORKISTHEJAVAXEJBENTERPRISEBEANINTERFACEEXTENDSJAVAIOSERIALIZABLE,ANDEVERYENTERPRISEBEANCLASSINDIRECTLYIMPLEMENTSTHISINTERFACEMORECONCRETELY,EVERYMEMBERVARIABLEINABEANISCONSIDEREDTOBEPARTOFTHEBEANSCONVERSATIONALSTATEIFTHEFOLLOWINGAPPLYTHEMEMBERVARIABLEISANONTRANSIENTPRIMITIVETYPE,ORTHEMEMBERVARIABLEISANONTRANSIENTJAVAOBJECTEXTENDSJAVALANGOBJECTFOREVERYJAVAOBJECTTHATSPARTOFABEANSCONVERSATIONALSTATE,THEPREVIOUSALGORITHMISREAPPLIEDRECURSIVELYONTHOSEOBJECTSTHUS,OBJECTSERIALIZATIONCONSTRUCTSANENTIREGRAPHOFDATAREFERREDTOBYTHEMAINBEANYOUSHOULDNOTETHATWHILEYOURBEANSMUSTFOLLOWTHERULESFOROBJECTSERIALIZATION,THEEJBCONTAINERITSELFDOESNOTNECESSARILYNEEDTOUSETHEDEFAULTSERIALIZATIONPROTOCOLITCOULDUSEACUSTOMPROTOCOLFORTHIS,TOALLOWFLEXIBILITYANDDIFFERENTIATIONBETWEENCONTAINERVENDORSACTIVATION/PASSIVATIONCALLBACKSLETSNOWLOOKATWHATACTUALLYHAPPENSTOYOURBEANDURINGPASSIVATIONANDACTIVATIONWHENANEJBCONTAINERPASSIVATESABEAN,THECONTAINERWRITESTHEBEANSCONVERSATIONALSTATETOSECONDARYSTORAGE,SUCHASAFILEORDATABASETHECONTAINERINFORMSTHEBEANTHATITSABOUTTOPERFORMPASSIVATIONBYCALLINGTHEBEANSREQUIREDEJBPASSIVATECALLBACKMETHODEJBPASSIVATEISAWARNINGTOTHEBEANTHATITSHELDCONVERSATIONALSTATEISABOUTTOBESWAPPEDOUTITSIMPORTANTTHATTHECONTAINERINFORMTHEBEANUSINGEJBPASSIVATESOTHATTHEBEANCANRELINQUISHHELDRESOURCESTHESEHELDRESOURCESINCLUDEDATABASECONNECTIONS,OPENSOCKETS,OPENFILES,OROTHERRESOURCESTHATDONOTMAKESENSETOBESAVEDTODISKORCANNOTBETRANSPARENTLYSAVEDUSINGOBJECTSERIALIZATIONTHEEJBCONTAINERCALLSTHEEJBPASSIVATEMETHODTOGIVETHEBEANACHANCETORELEASETHESERESOURCESORDEALWITHTHERESOURCESASTHEBEANSEESFITONCETHECONTAINERSEJBPASSIVATECALLBACKMETHODINTOYOURBEANISCOMPLETE,YOURBEANMUSTBEINASTATESUITABLEFORPASSIVATIONTHISISSHOWNINFIGURE51THEEXACTOPPOSITEPROCESSOCCURSDURINGTHEACTIVATIONPROCESSHERE,THESERIALIZEDCONVERSATIONALSTATEISREADBACKINTOMEMORY,ANDTHECONTAINERRECONSTRUCTSTHEINMEMORYSTATEUSINGOBJECTSERIALIZATIONORTHEEQUIVALENTTHECONTAINERTHENCALLSTHEBEANSREQUIREDEJBACTIVATEMETHODEJBACTIVATEGIVESTHEBEANACHANCETORESTORETHEOPENRESOURCESITRELEASEDDURINGEJBPASSIVATETHISENTIREPROCESSISSHOWNINFIGURE52DOYOUHAVETOWORRYABOUTIMPLEMENTINGEJBPASSIVATEANDEJBACTIVATEPROBABLYNOT,UNLESSYOUAREUSINGOPENRESOURCES,SUCHASSOCKETCONNECTIONSORDATABASECONNECTIONS,THATMUSTBEREESTABLISHEDAFTERACTIVATIONINMOSTCASES,YOUCANSIMPLYLEAVETHESEMETHODSEMPTYASIMPLESTATEFULSESSIONBEANLETSPUTOURSTATEFULSESSIONBEANKNOWLEDGETOUSEBYPROGRAMMINGASIMPLESTATEFULBEANOURBEANWILLBEACOUNTERBEAN,ANDITWILLSIMPLYBERESPONSIBLEFORCOUNTINGUPONEBYONETHECURRENTCOUNTWILLBESTOREDWITHINTHEBEAN,ANDITWILLINCREMENTASCLIENTREQUESTSARRIVETHUS,OURBEANWILLBESTATEFUL,ANDITWILLHOLDAMULTIMETHODCONVERSATIONWITHAPARTICULARCLIENTTHECOUNTBEANSREMOTEINTERFACEFIRST,LETSDEFINEOURBEANSREMOTEINTERFACETHECODEISSHOWNINSOURCE51OURREMOTEINTERFACEDEFINESASINGLEBUSINESSMETHODCOUNTWHICHWEWILLIMPLEMENTINTHEENTERPRISEBEANCLASSTHECOUNTBEANOURBEANIMPLEMENTATIONHASONEBUSINESSMETHOD,COUNT,WHICHISRESPONSIBLEFORINCREMENTINGANINTEGERMEMBERVARIABLE,CALLEDVALTHECONVERSATIONALSTATEISTHEVALMEMBERVARIABLEWESHOWTHECODEFOROURCOUNTERBEANINSOURCE52HEREARESOMETHINGSTONOTICEABOUTOURBEANTHEBEANIMPLEMENTSJAVAXEJBSESSIONBEANDEFINEDINCHAPTER3THISMEANSTHEBEANMUSTDEFINEALLMETHODSINTHESESSIONBEANINTERFACEINDEED,BYLOOKINGATTHEBEAN,YOUCANSEEWEVEDEFINEDTHEMBUTKEPTTHEMFAIRLYTRIVIALOUREJBCREATEINITIALIZATIONMETHODTAKESAPARAMETER,VALTHISISINSTARKCONTRASTTOSTATELESSSESSIONBEANS,WHICHNEVERTAKEPARAMETERSINEJBCREATEOURINITIALIZATIONMETHODISRESPONSIBLEFORBEGINNINGACONVERSATIONWITHTHECLIENTITUSESVALASTHESTARTINGSTATEOFTHECOUNTERTHEVALMEMBERVARIABLEOBEYSTHERULESFORCONVERSATIONALSTATEBECAUSEITISSERIALIZABLETHUS,ITWILLLASTACROSSMETHODCALLS,ANDITWILLAUTOMATICALLYBEPRESERVEDDURINGPASSIVATION/ACTIVATIONTHECOUNTBEANSHOMEINTERFACETOCOMPLETEOURSTATEFULBEANCODE,WEMUSTDEFINEAHOMEINTERFACETHEHOMEINTERFACEWILLDETAILHOWTOCREATEANDDESTROYOURCOUNTEJBOBJECTTHECODEFOROURHOMEINTERFACEISINSOURCE53BECAUSEWEIMPLEMENTJAVAXEJBEJBHOME,OURHOMEINTERFACEGETSTHEREMOVEDESTROYMETHODFORFREETHECOUNTBEANSDEPLOYMENTDESCRIPTORNOWTHATWEVEGOTALLOURJAVAFILESFOROURBEAN,WENEEDTODEFINETHEDEPLOYMENTDESCRIPTORTOIDENTIFYTHEBEANSSETTINGSTOTHECONTAINERTHEDEPLOYMENTDESCRIPTORSETTINGSWEUSEARELISTEDINTABLE51NOTICETHATWEVEADDEDACONTAINERSPECIFICDEPLOYMENTDESCRIPTORSETTING,“MAXBEANSLOADEDATANYTIME”NOTALLCONTAINERSWILLSUPPORTTHISTHEBEAWEBLOGICSERVERWETESTEDAGAINSTDOESWEARERESTRICTINGTHEMAXIMUMNUMBEROFBEANSLOADEDSOTHATWECANFORCETHEEJBCONTAINERTOPASSIVATEANDACTIVATEOURBEANSOURSTRATEGYWILLBETOLOADTHREEBEANSATONCE,THUSFORCINGTHECONTAINERTOPASSIVATEINORDERTOREDUCETHENUMBEROFBEANSINMEMORYALSONOTICETHATOURBEANSSTATEFULNATUREISDEFINEDDECLARATIVELYINTHEDEPLOYMENTDESCRIPTORWENEVERINTRODUCETHENOTIONOFABEANBEINGSTATEFULINTHEBEANCODEITSELFTHISALLOWSUSTOEASILYSWITCHFROMTHESTATEFULTOSTATELESSPARADIGMANDBACKTHECOUNTBEANSENVIRONMENTPROPERTIESTHISDEMONSTRATIONBEANISQUITESIMPLE,SOWEDONOTUSEENVIRONMENTPROPERTIESTOCUSTOMIZETHEBEANONDEPLOYMENTCHAPTER6DEMONSTRATESBEANSWITHPROPERTIESFILESTHECOUNTBEANSMANIFESTFILE,EJBJARFILE,ANDDEPLOYMENTTOCOMPLETEOURCOMPONENT,WENEEDTOWRITEAMANIFESTFILEFORTHEEJBJARFILETHEJARSMANIFESTISSTRAIGHTFORWARDANDNODIFFERENTREALLYFROMTHEONEWEUSEDFOROUR“HELLO,WORLD”BEANINCHAPTER4THEGENERATIONOFANEJBJARFILEISSIMILARTOOUR“HELLO,WORLD”EXAMPLEONCEWEGENERATETHEEJBJARFILE,WEMUSTDEPLOYOURBEANINANEJBCONTAINERTOTESTITOUTTHISSTEPVARIESWIDELYFROMCONTAINERTOCONTAINERIFYOUREUSINGTHEBEASWEBLOGICSERVER,TAKEALOOKATTHEMAKEFILEONTHEINCLUDEDCDROMFORTHISDEPLOYMENTSTEPIFYOUHAVEADIFFERENTPREFERREDCONTAINERVENDOR,CONSULTYOURVENDORSPRODUCTDOCUMENTATIONTOSAVESPACE,INFUTUREEXAMPLESWELLCONSIDERTHATMANIFESTGENERATION,EJBJARFILEGENERATION,ANDBEANDEPLOYMENTAREIMPLIEDSTEPSTHECOUNTBEANSCLIENTCODENOWTHATOURBEANISDEPLOYED,WECANWRITESOMEJAVACODETOTESTOURBEANSOURCLIENTCODEPERFORMSTHEFOLLOWINGSTEPS1WEACQUIREAJNDIINITIALCONTEXT2WELOCATETHEHOMEOBJECTUSINGJNDI3WEUSETHEHOMEOBJECTTOCREATETHREEDIFFERENTCOUNTEJBOBJECTSTHUS,WEARECREATINGTHREEDIFFERENTCONVERSATIONSANDARESIMULATINGTHREEDIFFERENTCLIENTS4OURDEPLOYMENTDESCRIPTORLIMITSTHEBEANPOOLSIZETOTWOBEANS,SODURINGTHEPREVIOUSSTEPSOMEOFTHETHREEBEANSMUSTHAVEBEENPASSIVATEDWEPRINTOUTAMESSAGEDURINGTHEEJBPASSIVATECALLBACKTOILLUSTRATETHIS5NEXT,WECALLCOUNTONEACHEJBOBJECTTHISFORCESTHECONTAINERTOACTIVATETHEINSTANCES,RESTORINGTHECONVERSATIONSTOMEMORYONCEAGAINWEPRINTOUTAMESASGEDURINGTHEEJBACTIVATECALLBACKTOILLUSTRATETHIS6FINALLY,ALLTHEEJBOBJECTSAREREMOVEDTHECODEAPPEARSINSOURCE54RUNNINGTHECLIENTTORUNTHECLIENT,YOUNEEDTOKNOWTHEPARAMETERSYOURJNDISERVICEPROVIDERUSESTHISSHOULDALSOBEPARTOFYOURCONTAINERSDOCUMENTATIONWITHTHEBEAWEBLOGICSERVER,WETYPEDTHEFOLLOWINGJAVADJAVANAMINGFACTORYINITIALWEBLOGICJNDITENGAHINITIALCONTEXTFACTORYDJAVANAMINGPROVIDERURLT3/LOCALHOST7001COMWILEYCOMPBOOKSROMANSESSIONCOUNTCOUNTCLIENTTHECLIENTSIDEOUTPUTAFTERRUNNINGTHECLIENT,WESEETHEFOLLOWINGOUTPUTINSTANTIATINGBEANS123CALLINGCOUNTONBEANS234WEFIRSTCREATEDTHREEBEANSANDTHENCALLEDCOUNTONEACHASEXPECTED,THEBEANSINCREMENTEDTHEIRVALUESBYONEEACHDURINGTHESECONDPASS,SOOUTPUTISASEXPECTEDBUTWEREOURBEANSREALLYPASSIVATEDANDACTIVATEDLETSCHECKTHESERVERLOGTHESERVERSIDEOUTPUTTHECONTAINERLOGYIELDSTHEFOLLOWINGRESULTSEJBCREATECOUNTEJBCREATECOUNTEJBCREATEEJBPASSIVATECOUNTEJBPASSIVATEEJBACTIVATECOUNTEJBPASSIVATEEJBACTIVATECOUNTEJBPASSIVATEEJBACTIVATECOUNTEJBPASSIVATEEJBACTIVATEEJBREMOVEEJBACTIVATEEJBREMOVEEJBREMOVEASYOUCANSEEFROMTHEPASSIVATION/ACTIVATIONMESSAGESINTHELOG,THECONTAINERISINDEEDPASSIVATINGANDACTIVATINGBEANSTOCONSERVESYSTEMRESOURCESBECAUSETHECLIENTSIDEOUTPUTISCORRECT,EACHOFOURBEANSCONVERSATIONALSTATEWASRETAINEDPROPERLYSTATEFULORSTATELESSNOWTHATWEVEGONETHROUGHAFEWEXAMPLES,YOUMAYBEWONDERINGWHENSTATEFULBEANSSHOULDBEUSEDANDWHENSTATELESSBEANSCANGETTHEJOBDONETHEREAREADVANTAGESANDDRAWBACKSTOBOTHSTATELESSANDSTATEFULDESIGNMYTHSANDFACTSABOUTSTATELESSNESSLATELY,THERESBEENALOTOFFUSSOVERSTATELESSNESSTHELIMITATIONSOFSTATELESSNESSAREOFTENEXAGGERATED,ASWELLASITSBENEFITSMANYSTATELESSNESSPROPONENTSBLINDLYDECLARETHATSTATELESSNESSLEADSTOINCREASEDSCALABILITY,WHILESTATEFULBACKERSARGUEABOUTHAVINGTOREARCHITECTENTIRESYSTEMSTOACCOMMODATESTATELESSNESSWHATSTHEREALSTORYDESIGNEDRIGHT,STATELESSNESSHASTWOVIRTUESWITHSTATELESSBEANS,THEEJBCONTAINERISABLETOEASILYPOOLANDREUSEBEANS,ALLOWINGAFEWBEANSTOSERVICEMANYCLIENTSWHILETHESAMEPARADIGMAPPLIESTOSTATEFULBEANS,THEBEANSTATEMUSTBEPASSIVATEDANDACTIVATEDBETWEENMETHODCALLS,POSSIBLYRESULTINGINI/OBOTTLENECKSSOONEPRACTICALVIRTUEOFSTATELESSNESSISTHEABILITYTOEASILYPOOLANDREUSECOMPONENTSATLITTLEORNOOVERHEADBECAUSEASTATEFULSESSIONBEANCACHESACLIENTCONVERSATIONINMEMORY,ABEANFAILUREMAYENTAILLOSINGYOURCONVERSATIONTHISCANHAVESEVEREREPRECUSSIONSIFYOUDONTWRITEYOURBEANSWITHTHISINMINDORIFYOUDONTUSEANEJBPRODUCTTHATPROVIDESSTATEFULRECOVERYTHELARGESTDRAWBACKTOSTATELESSNESSISTHATYOUNEEDTOPUSHCLIENTSPECIFICDATAINTOTHESTATELESSBEANFOREACHMETHODINVOCATIONMOSTSTATELESSSESSIONBEANSWILLNEEDTORECEIVESOMEINFORMATIONTHATISSPECIFICTOACERTAINCLIENT,SUCHASABANKACCOUNTNUMBERFORABANKINGBEANTHISINFORMATIONMUSTBERESUPPLIEDTOSTATELESSBEANSEACHTIMEACLIENTREQUESTARRIVESBECAUSETHEBEANCANNOTHOLDANYSTATEONBEHALFOFAPARTICULARCLIENTONEWAYTOSUPPLYTHEBEANWITHCLIENTSPECIFICDATAISTOPASSTHEDATAASPARAMETERSINTOTHEBEANSMETHODSTHISCANLEADTOPERFORMANCEDEGRADATION,HOWEVER,ESPECIALLYIFTHEDATABEINGPASSEDISLARGETHISALSOCLOGSTHENETWORK,REDUCINGAVAILABLEBANDWIDTHFOROTHERPROCESSESANOTHERWAYTOGETCLIENTSPECIFICDATATOASTATELESSBEANISFORTHEBEANTOSTOREDATAPERSISTENTLYONBEHALFOFACLIENTTHECLIENTTHENDOESNOTNEEDTOPASSTHEENTIRESTATEINAMETHODINVOCATION,BUTSIMPLYNEEDSTOSUPPLYANIDENTIFIERTORETRIEVETHEDATAFROMPERSISTENTSTORAGETHETRADEOFFHEREIS,AGAIN,PERFORMANCESTORINGCONVERSATIONSPERSISTENTLYCOULDLEADTOSTORAGEI/OBOTTLENECKS,RATHERTHANNETWORKI/OBOTTLENECKSYETANOTHERWAYTOWORKAROUNDTHELIMITATIONSOFSTATELESSNESSISFORABEANTOSTORECLIENTSPECIFICDATAINADIRECTORYSTRUCTUREUSINGJNDITHECLIENTCOULDLATERPASSTHEBEANANIDENTIFIERFORLOCATINGTHEDATAINTHEDIRECTORYSTRUCTURETHISISQUITESIMILARTOSTORINGDATAINADATABASETHEBIGDIFFERENCEISTHATAJNDIIMPLEMENTATIONCOULDBEANINMEMORYIMPLEMENTATIONTHISWOULDGIVEASIMILAREFFECTTOASHAREDPROPERTYMANAGER,FAMILIARTOMTS/COMREADERSIFCLIENTDATAISSTOREDINMEMORY,THEREISNODATABASEHITWHENCHOOSINGBETWEENSTATEFULANDSTATELESS,YOUSHOULDASKYOURSELFWHATTYPEOFBUSINESSPROCESSYOURSESSIONBEANSAREATTEMPTINGTOEMULATEDOESTHEBUSINESSPROCESSSPANMULTIPLEINVOCATIONS,REQUIRINGACONVERSATIONIFSO,THESTATEFULMODELFITSVERYNICELYBECAUSECLIENTSPECIFICCONVERSATIONSCANBEPARTOFTHEBEANSTATEONTHEOTHERHAND,IFYOURBUSINESSPROCESSLASTSFORASINGLEMETHODCALL,THESTATELESSPARADIGMWILLBETTERSUITYOURNEEDSINREALITY,MOSTSOPHISTICATEDDEPLOYMENTSARELIKELYTOHAVEACOMPLEXANDINTERESTINGCOMBINATIONOFSTATELESSANDSTATEFULBEANSTHECHOICEBETWEENSTATEFULORSTATELESSMAYALSOPALEINCOMPARISONTOOTHERFACTORSINYOUREJBDEPLOYMENT,SUCHASPROPERUSEOFTRANSACTIONSWELLFINDOUTHOWTOAPPROPRIATELYUSETRANSACTIONSINCHAPTER10SUMMARYINTHISCHAPTER,WELEARNEDHOWTOPROGRAMWITHSTATEFULSESSIONBEANSWEBEGANWITHALOOKATTHECONCEPTSBEHINDSTATEFULSESSIONBEANSANDHOWTHEYAREDIFFERENTFROMSTATELESSSESSIONBEANSWETHENCODEDUPASIMPLECOUNTINGPROGRAM中文翻译STATELESSSESSIONBEANS的基础在这一节,我们将学会如和编写“STATELESSSESSIONBEANS“。“STATELESSSESSIONBEANS“是由一个单独的方法命令执行典型商业的模式执行。本节从着眼于STATELESSSESSIONBEANS共享特性开始。我们将在后文用一个STATELESSBEAN的例子和简单的服务器代码来实现它。STATELESSSESSIONBEANS的特性在我进入编写的细节之前,我从编写STATELESSSESSIONBEANS不同于其他BEANS的细节的总观开始。无会话状态STATELESSSESSION停止了会话状态服务器的利益,尽管他们能包括互联网状态,他们的状态不是为一个详细的服务器而定制化。这说明所有STATELESSBEANS出现在同一的服务器,服务器不能分辨它们。要想使一个STATELESSSESSIONBEAN能对服务器有用,服务器必须通过BEAN所需关于商业逻辑方法的参数所有服务器数据。有选择性的,BEAN能从外部来源重新找回它所需的数据,与数据库相似。唯一初始化STATELESSSESSION的方法我们已经学会了用EJBCREATE方法初始化SESSIONBEANSSTATELESSSESSIONBEANS不能保持状态连接方法命令,他们也不能保持在服务器通过了EJBCREATE命令数据的状态。它因此不能使支持奇异的EJBCREATE方法有意义由于并发命令BEAN的实例,这个实例会对之前的EJBCREATE方法有纪录。从而所有的STATELESSSESSIONBEANS受到唯一一个EJBCREATE方法,不带参数。主对象也会受到与其匹配的不带参数的CREATE方法。容器能共享个再利用STATELESSSESSION由于STATELESSSESSIONBEANS的EJBCREATE方法不带有参数,服务期从不提供任何需要开动的“BEAN“实例的鉴定信息。因此EJB容器能在服务期连接前共享STATELESSSESSIONBEANS实例。当服务期命令一个方法时,容器能从共享中找回实例,让其为方法服务,然后把它返回到共享中。这个使容器能够有力的指派你的BEAN的实例到不同的服务期。另一个作用是来自服务期的每次请求,一个不同的STATELESSSESSIONBEANS实例能服务这个请求。这是因为STATELESSSESSION保持会话在单一方法请求的范围内并且在每个方法命令后摆脱了服务器特有状态。所有STATELESSSESSIONBEANS都认为在一个方法命令之后处于同一状态,他们不会有效的执行就算先前的方法命令发生。因此,容器能有力地再指定BEANS到服务器请求在每个方法级别。不同的STATELESSSESSIONBEANS能服务来自服务器的每个方法命令。当然,重新指定BEANS到服务器的实际执行是容器特有的。BEAN实例共享的好处是使BEANS的共享比服务器连接的实际数量少很多。这取决于服务器的“思考时间“,就像网络延迟或在服务器另一边人类的决定时间。在服务器运行的同时,容器能利用BEANS实例服务器他的服务器,储存先前系统资源。记录BEAN共享不需要有静止的大小。高级容器提供有力的重定大小的共享随时间,允许共享大小随着读取要求的波动而变化。举个例子,如果比晚上有更多的服务器在白天连接到你的设备。这些免费的系统资源不休止的被其他进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论