Wanneer moet Stateful session bean worden gebruikt in plaats van Stateless session bean?

Een stateful session bean wordt als volgt gedefinieerd:

Statistische Session Beans De staat van een object bestaat uit de waarden
van zijn instantievariabelen. In een stateful session bean, de instance
variabelen vertegenwoordigen de status van een unieke client-bean-sessie. Omdat
de cliënt interageert (“praat”) met zijn boon, deze toestand is vaak
de gesprekstoestand genoemd.

Een stateless session bean wordt als volgt gedefinieerd:

Stateless Session Beans Een stateless session bean houdt geen
gesprekssituatie met de cliënt. Wanneer een cliënt een beroep doet op de
methoden van een staatloze boon, kunnen de instantievariabelen van de boon bevatten:
een staat die specifiek is voor die cliënt, maar alleen voor de duur van de
aanroeping. Wanneer de methode is voltooid, wordt de klantspecifieke status
mag niet worden behouden. Klanten kunnen echter de status van
instantievariabelen in gepoolde staatloze bonen, en deze staat wordt vastgehouden
naar de volgende aanroep van de gepoolde staatloze boon. Behalve
tijdens het aanroepen van de methode zijn alle instanties van een staatloze boon
equivalent, waardoor de EJB-container een instantie kan toewijzen aan een willekeurige
cliënt. Dat wil zeggen, de toestand van een staatloze sessieboon zou van toepassing moeten zijn
bij alle klanten.

Het voordeel van het gebruik van een stateless session bean boven een stateful session bean is als volgt:

Omdat stateless session beans meerdere clients kunnen ondersteunen, kunnen ze:
bieden betere schaalbaarheid voor toepassingen die grote aantallen vereisen
van klanten. Een applicatie vereist doorgaans minder stateless sessies
bonen dan stateful session bonen ter ondersteuning van hetzelfde aantal
klanten.

Dus de vraag die bij je opkomt is wanneer je stateful session beans moet gebruiken? Naar mijn naïeve begrip van de zaak, moet men vasthouden aan het gebruik van een staatloze session bean als hij kan.

Wat zouden de kandidaten zijn waarin men stateful session bean zou moeten gebruiken? Nog goede voorbeelden?

Sessieboon


Antwoord 1, autoriteit 100%

Eerst moet je begrijpen hoe de bonen worden gemaakt en verwerkt op de server.

Voor stateless session beanskan de server een variabel aantal instances in een pool behouden. Elke keer dat een client een dergelijke stateless bean aanvraagt ​​(bijvoorbeeld via een methode), wordt een willekeurige instantie gekozen om aan dat verzoek te voldoen. Dat betekent dat als de client twee opeenvolgende verzoeken doet, het mogelijk is dat twee verschillende instanties van de stateless bean de verzoeken bedienen. In feite is er geen conversatie tussen de twee verzoeken. Ook als de client verdwijnt, wordt de stateless bean niet vernietigd en kan hij het volgende verzoek van een andere client dienen.

Aan de andere kant is een stateful session beannauw verbonden met de client. Elke instantie wordt gemaakt en gebonden aan een enkele client en dient alleen verzoeken van die specifieke client. Zo gebeurt het dat als u twee opeenvolgende verzoeken doet op een stateful bean, uw verzoek altijd wordt bediend vanuit hetzelfde exemplaar van de boon. Dat betekent dat u een gespreksstatus kunt behouden tussen de verzoeken. Aan het einde van de levenscyclus roept de client een verwijdermethode aan en wordt de bean vernietigd/klaar gemaakt voor het ophalen van afval.

Wanneer stateless of stateful gebruiken?

Dat hangt er vooral van af of je de conversatietoestandwilt behouden. Als u bijvoorbeeld een methode heeft die twee getallen optelt en het resultaat retourneert, gebruikt u een stateless bean omdat het een eenmalige bewerking is. Als je deze methode een tweede keer aanroept met andere nummers, ben je niet meer geïnteresseerd in het resultaat van de vorige optelling.

Maar als u wilt, bijvoorbeeld, om het aantal aanvragen te tellen dat een klant heeft gedaan, moet u een statige boon gebruiken. In dit scenario is het belangrijk om te weten hoe vaak de klant eerder de bonenmethode heeft gevraagd, dus u moet een conversationele toestand in de bonen onderhouden (bijvoorbeeld met een variabele). Als u hier een staatloze boon zou gebruiken, zou het verzoek van de klant elke keer van een andere boon worden geserveerd, die uw resultaten verpest.


Antwoord 2, Autoriteit 35%

Ik denk dat het grootste voorbeeld van het gebruik van een statige sessieboon is voor een winkelwagentje , waar u alle producten opslaat die gebruiker wil kopen.

Other episodes