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
Résultats
Exemple
<!-- 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>
Map<String, Object> rc = ((BindingProvider) port).getRequestContext();
...
...
rc.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, Boolean.TRUE);
...
...