Las clases Action de Struts tienen que ser thread safe

Este es un error recurrente que he visto en muchos proyectos y que acabo de ver ahora en una clase que estoy modificando: Las clases Action de Struts TIENEN que ser thread safe! Primero definamos lo que es thread safe (fuente Wikipedia):

Una pieza de código es thread-safe si funciona correctamente durante la ejecución simultánea de múltiples threads.

Las clases Action de Struts son singleton, es decir que existe una única instancia de cada clase Action, por lo tanto llegan requests concurrentes a cada clase Action. ¿Que implica esto? NO se pueden utilizar variables de instancia o de clase para guardar la información del estado de un request. Se deben utilizar siempre variables locales y pasarlas como parámetros a los métodos. Las variables locales y los parámetros son guardadas en la pila por la JVM, la JVM asigna una pila a cada hilo, por lo tanto cada request procesa sus variables de forma independiente. Pueden leer más sobre diseño thread safe en:

Thread-safe design Designing for Thread Safety