2009-06-25 11 views
0

J'utilise un code java hérité qui consiste en plusieurs classes statiques de avec dans une application Grails sous tomcat. Lorsque je n'ai qu'un utilisateur utilisant l'application Web, tout fonctionne correctement. Lorsque deux utilisateurs utilisent l'application, les choses commencent à mal tourner. Je crois que c'est parce que les classes statiques maintiennent des verrous de ressource tels que des sockets. Ai-je raison de supposer que, par défaut, toutes les sessions de l'application utiliseront la même copie de la classe statique? Si oui, existe-t-il un moyen de modifier ce comportement pour charger une nouvelle copie pour chaque session utilisateur?Les fonctions statiques sont-elles isolées dans les applications JSP/Grails sous tomcat?

+0

Pouvez-vous publier un exemple de méthodes statiques? Il y a quelques méthodes statiques dans les grails qui sont complètement normales. –

Répondre

0

Non, il n'y a pas loin pour mapper des méthodes statiques aux sessions http dans tomcat ou tout autre serveur d'application. Après avoir dit que les méthodes statiques sont seulement un problème si elles tiennent l'état statiquement.

Si tel est le cas, vous devrez soit réécrire ces classes afin de pouvoir stocker des instances dans la session.

+0

Ils maintiennent l'état pendant une courte période, il semble que mettre en synchronisation autour de tous les appels à eux résout le problème. – Jared

+0

Vous pourriez être en mesure de modifier les définitions de classe afin que les méthodes aient le mot-clé synchronized dans la définition de la méthode. public synchronized methodName() {} Ainsi, vous n'avez pas à vous soucier de l'encapsuler dans un bloc synchronisé à chaque appel de méthode. –

Questions connexes