翻譯文獻-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

提交評論