2010-08-27 7 views
4

J'ai parcouru divers livres sur le bean session sans état et sans état et sur leur fonctionnement. Je veux connaître l'utilisation réelle de ces ejbs et avantages sur l'utilisation de classes Java simples. Fondamentalement, quand allez-vous pour les ejabs apatrides et quand allez-vous pour ejbs stateful. Je veux une application en temps réel.Beans de session sans état EJB et bean session avec état

+0

vous voulez dire les différences entre les états sans état et avec état? – mhshams

+0

@shamsi pas exactement mais pas de réponse théorique. –

+0

duplication possible de [Beans Java Enterprise sans état et stateful] (http://stackoverflow.com/questions/2351220/stateless-and-stateful-enterprise-java-beans) –

Répondre

10

L'utilisation de ce type d'ejbs est généralement dans la couche de service en tant que classes de service.

EJB3 bean stateful et stateful sont en réalité POJO (avec quelques annotations) et ils n'ont pas de grande différence avec les classes normales.

mais en terme d'utilisation, ils ont des capacités que vous ne pouvez pas trouver dans les classes normales comme:

  • ils peuvent être appelés à distance (par exemple le protocole RMI).
  • Ils peuvent utiliser des ressources de contexte de serveur d'applications telles que DB Connection and Transactions.

apatride ou stateful: - si une tâche ou un processus qui peut être fait en une seule étape (par un seul appel de méthode) sans état est la bonne option comme un processus d'authentification - si une tâche a besoin d'une série des appels de méthode (plus d'un) et vous devez garder les résultats précédents pour les utiliser dans l'appel suivant, puis allez pour stateful. comme un processus d'expédition (sélectionnez les articles, ajoutez/supprimez et ensuite effectuez la transaction)

Session http ou stateful?

Les ejbs peuvent être servis dans un serveur d'application et ils peuvent avoir différents types de clients comme une application normale ou ..., donc vous ne pouvez pas relayer sur une session http dans ce cas. Si votre serveur d'applications et votre serveur Web sont différents (distribués), ce n'est pas une bonne idée de conserver les données dans la session http et de les transmettre/revenir du serveur de l'application (surcharge du réseau).

+1

pour maintenir l'état, nous pouvons utiliser la session http –

+0

@Suresh: oui, c'est vrai aussi, c'est à vous de choisir le bon endroit pour garder l'état. – mhshams

+0

quand allez-vous pour la session http vs stateful également sans état –

1
  • Les beans de session sans état sont légers: ils ne stockent pas d'informations sur un utilisateur spécifique. Ils sont généralement utilisés de manière statique. Par exemple, un client demande une information de produit communiquera avec un bean de session sans état. ("Vous voulez le prix du produit 'YXZ', c'est parti!")

  • Le bean de session stateful se souvient cependant des informations du client. Ils contiennent des données sur les actions de l'utilisateur. Par exemple, supposons qu'un utilisateur passe par un panier. Les étapes seront stockées dans un bean de session avec état (par exemple, l'utilisateur à l'étape de paiement).


Vous avez vraiment besoin des deux types de haricots de session dans un site Web. À moins que votre site web ne soit si basique que tout puisse être fait avec le bean session sans état (un site web en lecture seule).

Tout site Web qui suit un utilisateur via des cookies aura besoin d'un bean session avec état. Sachez toutefois que vous pouvez décider de mettre très peu d'informations de session dans un bean session et de stocker ces informations dans une base de données. Mais vous avez toujours besoin de gestion de session.

+0

J'ai lu cela partout. mais je veux savoir quand vous préférez, votre expérience dans leur utilisation. –

+1

nous pouvons utiliser httpsession pour maintenir l'état du client. –

0

Les développeurs préfèrent conserver l'état dans la couche Web dans les applications d'entreprise modernes.Je n'ai jamais vu une application web du monde réel utilisant Stateful Session Bean. C'est un problème d'évolutivité aussi.

0

Un exemple est un bean session de panier avec état qui suit les choix de produits d'un client et peut exécuter une vente à la demande.

Questions connexes