Vous voulez savoir comment une demande est traitée par plusieurs serveurs en maintenant la même session d'utilisateur. P>
Par exemple: Nous nous connectons à IrCTC et essayez de réserver un ticket.
Pendant le paiement, ICTC énumère plusieurs options bancaires avec des boutons radio pour la transaction en ligne. En supposant que je décide de faire une transaction à l'aide de la banque Citi, lorsque je clique sur le bouton Radio Citi Bank, je suis redirigé vers Citi Bank Site Web TRANSACTION Page I.E Vous verrez l'URL est commutée de site Web d'IRCTC en URL de la banque Citi. Cela signifie que je suis complètement hors de l'IrCTC et je suis passé au site Web de Citi Bank. Maintenant, lorsque ma transaction de paiement est terminée, je suis retourné sur le site Web d'IrCTC du site Web de Citi Bank J'aimerais savoir comment cela fonctionne. P>
J'utilise des travaux de châssis de Struts. Veuillez m'aider à cet égard et à mettre en œuvre la même chose avec quelques exemples. p>
En supposant que l'IRCTC utilise des jambes de force (JSP / servlets), quelle composante Struts prend la respectabilité d'envoyer les détails de IrCTC à Citi Bank et de recevoir des retiaux de retiens Citi Bank en Irctc. Est-il possible d'utiliser demandeDispacter.sendredirect () ou quelque chose d'autre? P>
merci, p>
4 Réponses :
Il y a quelque chose appelé réplication de session . Il est utilisé dans des clusters pour que tous les nœuds de cluster utilisent les mêmes informations de session. Lisez le site lié ou d'autres ressources sur la manière dont la réplication de session fonctionne, si vous êtes curieux. P>
Mais les systèmes n'ont pas besoin de partager un objet de session entier. Dans votre cas, il semble que vous quittiez un serveur et revenez plus tard sans traitement de session spéciale. La session n'était tout simplement jamais fermée. Comme si vous vous connectez à votre site de messagerie Web préféré, passez à une page complètement différente et revenez sur votre site de messagerie Web. La session est toujours là. Vous êtes toujours connecté. P>
Un site d'IrCTC probablement probablement passe des informations sur le site de la banque Citi, qui est requis pour CITI de traiter la demande avec un jeton (juste un nombre dans le cas le plus simple). Lorsque la banque Citi est terminée, il appelle un serveur IRCTC avec le code de résultat et le jeton. Utilisation du jeton Le serveur IRCTC peut associer le code de résultat avec votre session. Ensuite, Citi Bank redirige simplement votre navigateur vers une page IRCTC. Le serveur proposé une session mise à jour et peut vous présenter la page suivante de votre processus de commande. P>
Je ne pense pas que les passerelles de paiement maintiennent une session utilisateur individuelle de différentes banques différentes ....
@ Eduard, dans ce cas, il ne pourrait pas être réplique de session comme IrCTC et Citibank sont une oraganisation différente afin de ne pas avoir de réplication de session.
Les 2 commentaires ci-dessus ont raison.Mais, toujours merci pour votre concept de réplication.Je en ai appris.
Merci les gars. Mais malheureusement, nous n'utilisons pas WebServices ni nous ne sommes dans un environnement en cluster. Je suis en train de travailler une application de Strauts. L'une de mes collines a suggéré d'utiliser demandeDispAther.sendedirect (). Pourriez-vous que les gars, aidez-moi s'il vous plaît à connaître est qu'il est vraiment possible d'obtenir une demande de demande d'un serveur à un autre à l'aide de requestDispAther.Sendedirect (). Je vous demande de bien vouloir m'aider à m'aider avec un exemple de code.
@anandkumar Non, ce n'est pas possible d'envoyer une demande à une autre URL à l'aide de requestDispatcher, car elle prend un chemin relatif de votre ressource. Cependant, vous pouvez faire un formulaire Soumettre sur l'autre URL. Voir ma réponse ci-dessous.
Comment pouvez-vous dire que la session d'utilisateur est la même dans les deux serveurs? P>
Je vais supposer que vous parlez des options de passerelle de paiement et de leurs fonctionnalités. P>
Ce qui se passe généralement, c'est que vous envoyez un appel de service Web et redirige l'utilisateur à une URL de la passerelle de paiement, qui traitera des détails de la transaction. p>
Ensuite, la banque d'origine reçoit la réponse du service Web de passerelles de paiement avec les détails de la transaction. P>
Ce flux varie légèrement sur différentes passerelles. Cependant, la chose la plus importante est qu'elles ne maintiennent pas une session pour votre utilisateur dans leurs serveurs, s'ils le maintiennent une session, alors il s'agira pour le site Web de l'IRCTC. P>
Il y a aucune session partagée forte> entre IrCTC et Citi Bank ici. IRCTC apporte une demande à Citi Bank par le formulaire Soumettre sur l'URL de la banque Citi et le montant de paiement et d'autres éléments sont envoyés en tant que paramètre masqué sous cette forme (bien sûr, via un mécanisme sécurisé, comme avec certains hachas des valeurs envoyées). après Le paiement est effectué avec succès, Citi Bank fait un formulaire Soumettre à IRCTC URL (URL de retour indiqué par IRCTC). avec les détails (comme succès / erreur) dans le paramètre caché. IrCTC traite et affiche l'écran de réussite / erreur. P> En outre, la session de votre demande parent n'est jamais tuée dans ce cas. La session pourrait se terminer par l'une des manières suivantes: p> Dans ce cas, rien de ce produit et la session d'utilisateur n'est toujours là dans le navigateur et l'application. P> < p> Si l'application dispose de plusieurs serveurs, la session est partagée entre eux à l'aide de mécanisme de réplication de la session que fournissez les serveurs. P> En outre, le serveur Web Demander le même serveur (pour un identifiant de session) et uniquement Appelle un autre serveur d'applications lorsque le serveur d'origine n'est pas accessible, la réplication de la session de cas se présente à la rescousse de l'utilisateur. p> p>
En supposant que l'IRCTC utilise des jambes de force (JSP / servlets), quelle composante Struts prend la réponse à l'envoi des détails de l'IRCTC à Citi Bank et recueille des retials Formulaire de Citi Bank à IRCTC. Est-il possible d'utiliser RequestDispacter.Sendedirect () ou quelque chose d'autre?
@anandkumar: Ne vous confondez pas avec des technologies. Comme déjà écrit, RequestDispatcher ne fonctionne que sur ressource relative, comme votre JSP dans l'application. Pour votre objectif, vous devrez créer un JSP, avec un formulaire, où l'action du formulaire serait une URL de la passerelle de paiement (donnée par passerelle de paiement, tout en enregistrant avec eux) et contiendra des paramètres masqués, qui auront des détails comme le paiement, ID de marchand, etc. Le formulaire Soumettre est fourni par HTML, ne confondez pas avec des jambes de force, dans ce cas, le formulaire Soumettre ne sera pas votre action de force, mais à la passerelle de paiement directement.
Il y a quelque chose de migration de session d'appel, où un lb (serveur d'équilibrage de charge) disponible pour obtenir plusieurs demandes et contact avec plusieurs applications Server.Et une demande d'utilisateur peut être partager sur plusieurs serveurs où plusieurs utilisateurs demandent la même chose. Évidemment, le serveur où la demande ira doit être libre. Ensuite, LBS prend 1ère demande et transmettez à un serveur gratuit où Session OBJ a créé pour cet utilisateur. Maintenant, la 2e demande est transmise au 2e serveur. Mais le 2e serveur veut partager la 1ère session d'utilisateur obj de sorte que le temps où nous devons migrer de la session 1 à la session 2. Il dispose de deux événements qui se produiront événement passivité et événement activé. Nous devons utiliser un auditeur httpsessionActivationListener et doit mettre en œuvre une session VoidWillpasivate () et une session VoidDidActivate () P>