J'ai développé un site Web en utilisant Struts2 comme contrôleur et l'ai intégré avec Spring et Hibernate pour faire la logique métier et les choses DB. Les URI du site sont: http://my.domian.com/URI; lequel {URI} est généré dynamiquement à partir des cms d'administration. La cartographie de chaque uri au servlet sont faites avec l'aide d'Apache mod_rewrite, comme suit: (Avant toute information complémentaire, est-ce une bonne approche et appropriée)Classe d'action unique pour plusieurs URI dynamiques jette une exception lors de la demande simultanée
RewriteCond %{HTTP_HOST} ^www\.domain\.com
RewriteRule ^([a-zA-Z0-9_-]+)$ /dynamic\.action?f=$1 [QSA,L]
La configuration des entretoises est juste un typiquement académique:
<package name="Default" extends="struts-default" namespace="/">
...
<action name="dynamic" class="DynamicContentAction">
<result name="index">/content/web/dynamic/index.jsp</result>
</action>
</package>
DynamicContentAction prolonge ActionSupport et la mise en œuvre ServletRequestAware, ServletContextAware. Je vérifie un certain nombre de choses (comme une langue de visite actuelle identifiée comme sous-domaine), recherchant dans la base de données que l'uri demandé est valide ou non, générant le contenu de cet uri et définissant quelques variables globales d'exécution (tel que l'ID de la page en cours de visite, la configuration de la mise en page en raison de la langue de visite en cours ...) et placez-la sur un objet Request dans cette servlet.
Tout va bien et fonctionne même parfaitement, à moins que trop de pages dynamiques ne soient demandées simultanément par un seul utilisateur. "Trop" dans mon cas est d'au moins 9-10 pages. Dans ce cas il jette des exceptions, différentes! Parfois, la requête HttpServletRequest est nulle, parfois ServletContext servletContext est null, d'autres fois, elles sont correctes, mais les variables d'exécution sont nulles, ce qui est utilisé dans la logique métier ou l'interrogation db. J'ai recherché sur google à ce sujet et j'ai découvert que cette action est instanciée "par demande". N'est-ce pas? S'il y a une action par requête, quel est le problème avec ce conflit ou "chose de nullité". Est-ce que je devrais faire quelque chose comme un fil dans cette action, au-delà du filetage des entretoises?
Je serais tellement apprécié si vous pouviez m'aider ou me montrer une direction.