Remarques sur RRD
Cette rubrique décrit certaines considérations à prendre en compte pour l'utilisation de RRD (Remote request dispatcher).
- Si une application attend des paramètres dans un certain codage, il lui faut définir le codage de caractères avant que RRD (Remote request dispatch) ne s'effectue, comme pour une directive include normale.
- Les données ServletInputStream du serveur local ne sont pas accessibles au serveur distant. Le serveur local analyse les données POST avant d'envoyer la demande RRD au serveur distant et inclut les paramètres sous forme de paramètres de demande. Les données d'imprimés multiples sont inaccessibles au serveur distant. Une exception UnsupportedOperationException est générée si le serveur distant tente d'obtenir un flot d'entrée à partir de la demande.
- Pas d'accès à la référence de la demande originale sur le serveur distant.
- Les encapsuleurs de demande et de réponse créés sur le serveur local ne sont pas accessibles sur le serveur distant, car les encapsuleurs ServletRequestWrappers et les objets ServletRequest internes à WebSphere n'implémentent pas Serializable.
- Les attributs de demandes doivent être sérialisables.
- La définition de classe des attributs doit être disponible à la fois sur les serveurs local et distant.
- Les attributs de demandes sont propagés au serveur distant et renvoyés au serveur local.
- Sessions HTTP
- Un accès transversal entre différentes applications Web est impossible lorsque les applications sont distantes.
- Lorsque toutes les applications se situent sur un même serveur local, un partage des sessions est possible en les stockant dans une table accessible à plusieurs applications Web. Ceci est impossible avec RRD et déconseillé sur les serveurs locaux.
- Modèle de programmation servlet : il n'est pas possible d'accéder à une session partagée entre plusieurs applications Web.
- Modèle de programmation normal sur serveur local et sur serveur distant.
- En mode local, l'application peut mettre la référence en cache et partager une session entre plusieurs applications Web, ce que ne permet pas RRD.
- La classe Session n'implémentant pas Serializable, un objet de session stocké sous la forme d'un attribut de demande ne sera pas accessible sur un serveur distant.
- Les variables locales de l'unité d'exécution définies sur le serveur local ne sont pas accessibles sur le serveur distant.
- Toutes les méthodes définies sur l'objet ServletContext ne sont pas accessibles à l'objet ServletContext RRD. Pour plus d'informations, voir la documentation SPI pour com.ibm.wsspi.rrd.context.RemoteServletContext.
- Avec RRD, le serveur distant n'a pas accès aux données de sortie du serveur local.
- Cookies et encapsuleurs ServletRequestWrappers
Javax.servlet.http.Cookie n'implémentant pas Serializable, si une application destinataire encapsule la méthode HttpServletRequest.getCookies et ajoute ou supprime des cookies, les cookies modifiés ne sont pas envoyés au serveur distant. Les cookies issus des en-têtes des demandes d'origine sont envoyés au serveur distant.