Utilisation du support de gestion des sessions HTTP pour les applications JAX-WS

La gestion des sessions HTTP est effectuée dans la couche de transport HTTP en utilisant des cookies ou la réécriture d'URL. En fournissant plusieurs options pour le suivi d'un ensemble de demandes, la gestion des sessions HTTP permet aux applications JAX-WS (Java™ API for XML-Based Web Services) d'apparaître dynamiquement pour les utilisateurs d'application.

Avant de commencer

Développement d'un client Dynamic Proxy ou Dispatch JAX-WS. Pour plus d'informations sur le développement de clients JAX-WS, consultez les rubriques sur le développement d'un client JAX-WS à partir d'un fichier WSDL ou sur le développement d'un client dynamique à l'aide d'API JAX-WS.

Pourquoi et quand exécuter cette tâche

Vous pouvez utiliser la gestion de sessions HTTP pour gérer les informations d'état utilisateur sur le serveur, tout en transmettant le minimum d'informations à l'utilisateur pour effectuer le suivi de la session. Vous pouvez implémenter la gestion de sessions HTTP sur le serveur d'applications à l'aide de cookies de session ou de la réécriture d'URL.

L'interaction entre le navigateur, le serveur d'applications et l'application est transparente pour l'utilisateur et le programme d'application. L'application et l'utilisateur ne connaissent pas l'identificateur de session fourni par le serveur.

Cookies de session

La fonction de gestion HTTP utilise un seul cookie, JSESSIONID et ce cookie contient l'identificateur de session. Ce cookie permet d'associer la demande aux informations stockées sur le serveur pour cette session. Lors des demandes suivantes provenant de l'application JAX-WS, l'ID session est transmis comme partie de l'en-tête de demande, ce qui permet à l'application d'associer chaque demande pour un ID session indiqué à des demandes antérieures de cet utilisateur. Les applications client JAX-WS extraient l'ID session des en-têtes de réponse HTTP puis utilisent ces ID dans les demandes suivantes en définissant l'ID session dans les en-têtes de requête HTTP.

Réécriture d'URL

La réécriture d'URL fonctionne de la même façon qu'un URL redirigé lorsqu'il stocke l'identificateur de session dans l'URL. L'identificateur de session est codé comme un paramètre sur tout lien ou formulaire qui est soumis à partir d'une page Web. Cet URL codé est utilisé pour les demandes suivantes sur le même serveur.

Procédure

  1. Configurez le serveur pour activer le suivi des sessions. Pour votre mécanisme de suivi de session dans la console d'administration, sélectionnez les cookies de session ou la réécriture d'URL. Pour savoir comment effectuer le suivi des sessions avec des cookies ou la réécriture d'URL, consultez les informations relatives à la configuration du suivi de session.
  2. Activez la gestion de session HTTP pour le client JAX-WS. Vous pouvez manuellement attribuer la valeur true à la propriété maintainSession dans la liaison de l'ensemble de règles.
    • Activez la gestion des sessions sur le client à l'aide d'un fichier d'ensemble de règles de transport HTTP. Vous pouvez configurer la règle de transport HTTP à l'aide de la console d'administration. Sur la page des paramètres de transport HTTP, sélectionnez la case à cocher Session activée pour activer une session HTTP. Pour savoir comment définir cette propriété, consultez les informations relatives à la configuration de la propriété de transport HTTP. Vous pouvez également attribuer la valeur yes à la propriété maintainSession pour activer la gestion des sessions HTTP.
    • Activez la gestion des sessions sur le client en attribuant la valeur true à la propriété JAX-WS, javax.xml.ws.session.maintain.

Résultats

Vous avez activé la gestion des sessions HTTP pour votre application JAX-WS.

Exemple

L'exemple suivant est extrait d'un ensemble de règles de transport HTTP qui démontre comment configurer la propriété maintainSession :
<!-- This is the PolicyType for HTTP transport -->
        <wsp:ExactlyOne>
                <wsp:All>
                        <wshttp:readTimeout>300</wshttp:readTimeout>
                        <wshttp:writeTimeout>300</wshttp:writeTimeout>
                        <wshttp:connectTimeout>180</wshttp:connectTimeout>
                        <wshttp:persistConnection>yes</wshttp:persistConnection>
                        <wshttp:messageResendOnce>no</wshttp:messageResendOnce>
                        <wshttp:chunkTransferEnc>no</wshttp:chunkTransferEnc>
                        <wshttp:acceptRedirectedURL>no</wshttp:acceptRedirectedURL>
                        <wshttp:sendExpectHeader>no</wshttp:sendExpectHeader>
                        <wshttp:maintainSession>yes</wshttp:maintainSession>
                        <wshttp:compressRequest>
                                <wshttp:compressType name="none"></wshttp:compressType>
                        </wshttp:compressRequest>
                        <wshttp:compressResponse>
                                <wshttp:compressType name="none"></wshttp:compressType>
                        </wshttp:compressResponse>
                        <wshttp:protocolVersion>HTTP/1.1</wshttp:protocolVersion>
                </wsp:All>
        </wsp:ExactlyOne>
L'exemple de code suivant démontre comment activer par programmation la gestion des sessions sur le client en définissant la propriété javax.xml.ws.session.maintain sur l'objet JAX-WS correct.
Map<String, Object> rc = ((BindingProvider) port).getRequestContext();
...
...
rc.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, Boolean.TRUE);
...
...


Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_httpsessmgmt
Nom du fichier : twbs_httpsessmgmt.html