已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
外文原文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的基礎(chǔ)在這一節(jié),我們將學(xué)會(huì)如和編寫“STATELESSSESSIONBEANS“。“STATELESSSESSIONBEANS“是由一個(gè)單獨(dú)的方法命令執(zhí)行典型商業(yè)的模式執(zhí)行。本節(jié)從著眼于STATELESSSESSIONBEANS共享特性開始。我們將在后文用一個(gè)STATELESSBEAN的例子和簡(jiǎn)單的服務(wù)器代碼來(lái)實(shí)現(xiàn)它。STATELESSSESSIONBEANS的特性在我進(jìn)入編寫的細(xì)節(jié)之前,我從編寫STATELESSSESSIONBEANS不同于其他BEANS的細(xì)節(jié)的總觀開始。無(wú)會(huì)話狀態(tài)STATELESSSESSION停止了會(huì)話狀態(tài)服務(wù)器的利益,盡管他們能包括互聯(lián)網(wǎng)狀態(tài),他們的狀態(tài)不是為一個(gè)詳細(xì)的服務(wù)器而定制化。這說(shuō)明所有STATELESSBEANS出現(xiàn)在同一的服務(wù)器,服務(wù)器不能分辨它們。要想使一個(gè)STATELESSSESSIONBEAN能對(duì)服務(wù)器有用,服務(wù)器必須通過(guò)BEAN所需關(guān)于商業(yè)邏輯方法的參數(shù)所有服務(wù)器數(shù)據(jù)。有選擇性的,BEAN能從外部來(lái)源重新找回它所需的數(shù)據(jù),與數(shù)據(jù)庫(kù)相似。唯一初始化STATELESSSESSION的方法我們已經(jīng)學(xué)會(huì)了用EJBCREATE方法初始化SESSIONBEANSSTATELESSSESSIONBEANS不能保持狀態(tài)連接方法命令,他們也不能保持在服務(wù)器通過(guò)了EJBCREATE命令數(shù)據(jù)的狀態(tài)。它因此不能使支持奇異的EJBCREATE方法有意義由于并發(fā)命令BEAN的實(shí)例,這個(gè)實(shí)例會(huì)對(duì)之前的EJBCREATE方法有紀(jì)錄。從而所有的STATELESSSESSIONBEANS受到唯一一個(gè)EJBCREATE方法,不帶參數(shù)。主對(duì)象也會(huì)受到與其匹配的不帶參數(shù)的CREATE方法。容器能共享個(gè)再利用STATELESSSESSION由于STATELESSSESSIONBEANS的EJBCREATE方法不帶有參數(shù),服務(wù)期從不提供任何需要開動(dòng)的“BEAN“實(shí)例的鑒定信息。因此EJB容器能在服務(wù)期連接前共享STATELESSSESSIONBEANS實(shí)例。當(dāng)服務(wù)期命令一個(gè)方法時(shí),容器能從共享中找回實(shí)例,讓其為方法服務(wù),然后把它返回到共享中。這個(gè)使容器能夠有力的指派你的BEAN的實(shí)例到不同的服務(wù)期。另一個(gè)作用是來(lái)自服務(wù)期的每次請(qǐng)求,一個(gè)不同的STATELESSSESSIONBEANS實(shí)例能服務(wù)這個(gè)請(qǐng)求。這是因?yàn)镾TATELESSSESSION保持會(huì)話在單一方法請(qǐng)求的范圍內(nèi)并且在每個(gè)方法命令后擺脫了服務(wù)器特有狀態(tài)。所有STATELESSSESSIONBEANS都認(rèn)為在一個(gè)方法命令之后處于同一狀態(tài),他們不會(huì)有效的執(zhí)行就算先前的方法命令發(fā)生。因此,容器能有力地再指定BEANS到服務(wù)器請(qǐng)求在每個(gè)方法級(jí)別。不同的STATELESSSESSIONBEANS能服務(wù)來(lái)自服務(wù)器的每個(gè)方法命令。當(dāng)然,重新指定BEANS到服務(wù)器的實(shí)際執(zhí)行是容器特有的。BEAN實(shí)例共享的好處是使BEANS的共享比服務(wù)器連接的實(shí)際數(shù)量少很多。這取決于服務(wù)器的“思考時(shí)間“,就像網(wǎng)絡(luò)延遲或在服務(wù)器另一邊人類的決定時(shí)間。在服務(wù)器運(yùn)行的同時(shí),容器能利用BEANS實(shí)例服務(wù)器他的服務(wù)器,儲(chǔ)存先前系統(tǒng)資源。記錄BEAN共享不需要有靜止的大小。高級(jí)容器提供有力的重定大小的共享隨時(shí)間,允許共享大小隨著讀取要求的波動(dòng)而變化。舉個(gè)例子,如果比晚上有更多的服務(wù)器在白天連接到你的設(shè)備。這些免費(fèi)的系統(tǒng)資源不休止的被其他進(jìn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑防水勞務(wù)合同條款及注意事項(xiàng)
- 2025年度鄭上新城集團(tuán)社會(huì)化公開招聘工作人員5人模擬筆試試題及答案解析
- 2026河北滄州師范學(xué)院選聘高層次人才15人參考筆試題庫(kù)附答案解析
- 2025年度12月浙江嘉興市海寧市交通投資控股集團(tuán)有限公司下屬公司招聘4人參考考試題庫(kù)及答案解析
- 2025吉林四平市伊通滿族自治縣衛(wèi)生系統(tǒng)事業(yè)單位招聘(含專項(xiàng)招聘高校畢業(yè)生)117人考試備考題庫(kù)及答案解析
- 2025年馬鞍山十七冶醫(yī)院招聘15人備考筆試試題及答案解析
- 2025年平陽(yáng)縣興陽(yáng)控股集團(tuán)有限公司下屬房開公司公開招聘項(xiàng)目制員工15人模擬筆試試題及答案解析
- 中小企業(yè)薪酬體系設(shè)計(jì)與落實(shí)方案
- 現(xiàn)場(chǎng)勘測(cè)施工方案(3篇)
- 鐵路便道施工方案(3篇)
- PE管材項(xiàng)目可行性研究報(bào)告范文
- 脾胃病辨證護(hù)理
- 機(jī)器人焊接工作站技術(shù)方案
- 體育與勞動(dòng)融合課件
- 嚴(yán)重精神障礙患者管理治療規(guī)范培訓(xùn)
- 牙本質(zhì)敏感的脫敏治療
- 《西方油畫的技法與材料》課件
- SJG 162 – 2024城市地下空間防澇技術(shù)導(dǎo)則
- GB/T 20424-2025重有色金屬精礦產(chǎn)品中有害元素的限量規(guī)范
- 七年級(jí)下學(xué)期歷史必背知識(shí)清單(填空版)
- 《cGMP信號(hào)通路》課件
評(píng)論
0/150
提交評(píng)論