Désactivation du regroupement de servlets : Meilleures méthodes et remarques
Par exemple, vous pouvez choisir de désactiver la mise en pool des demandes et des réponses en cas de création d'unités d'exécution dans votre application, ou si le conteneur Web utilise les mêmes objets de demande et de réponse à plusieurs reprises.
Désactivation du regroupement de demandes et de réponses
- Votre application crée des unités d'exécution.
La spécification Servlet 2.4 indique ce qui suit :
SRV.4.10 Durée de vie de l'objet de demande Chaque objet de demande n'est valide que dans la portée d'une méthode de service de servlet ou d'une méthode de filtre doFilter. Les conteneurs recyclent généralement les objets de demande de sorte à empêcher la surcharge des performances consécutive à leur création. Le développeur doit savoir qu'il n'est pas recommandé de conserver des références aux objets de demande hors de la portée indiquée précédemment car ceci peut entraîner des résultats indéterminés.
SRV.5.6 Durée de vie de l'objet de réponse Chaque objet de réponse n'est valide que dans la portée d'une méthode de service de servlet ou d'une méthode de filtre doFilter. Les conteneurs recyclent généralement les objets de réponse de sorte à empêcher la surcharge des performances consécutive à leur création. Le développeur doit avoir conscience que le fait de conserver des références aux objets de réponse hors de la portée indiquée ci-dessus peut entraîner un comportement indéterminé.
- Le conteneur Web utilise les mêmes objets de demande et de réponse à plusieurs reprises.
Comme il est décrit dans la section de Servlet 2.4 relative à la sécurité des unités d'exécution, les mêmes objets étant utilisés à plusieurs reprises, il peut arriver que deux demandes s'exécutant dans deux applications distinctes accèdent au même objet de demande ou de réponse.
SRV.2.3.3.3 Accès simultané par plusieurs unités d'exécution Le cloisonnement des unités d'exécution n'est pas garanti lors de l'implémentation des objets de demande et de réponse. En conséquence, ne les utilisez que dans la portée de l'unité d'exécution gérant la demande.
Ne donnez pas de références aux objets de demande et de réponse à des objets s'exécutant dans d'autres unités d'exécution sous peine d'entraîner un comportement indéterminé. Si l'unité d'exécution créée par l'application utilise les objets gérés par conteneur, comme l'objet de demande ou de réponse, il ne doit être accédé à ces objets que dans le cycle de vie de service de servlet et le cycle de vie de l'unité d'exécution elle-même doit être plus court celui de la méthode de service de servlet. En effet, accéder à ces objets après l'aboutissement de la méthode de service peut entraîner un comportement indéterminé. Sachez que les objets de demande et de réponse ne respectent pas le cloisonnement des unités d'exécution. S'il est accédé à ces objets dans les unités d'exécution multiples, afin d'assurer le cloisonnement des différentes unités, l'accès doit être synchronisé ou être réalisé au moyen de l'encapsuleur : par exemple, synchronisez l'appel des méthodes pour accéder à l'attribut de demande ou utilisez un flux de sortie local pour l'objet de réponse au sein d'une unité d'exécution.