Les meilleures pratiques pour la mise à jour/écriture de variable statique?

J'ai un projet qui affiche de documentation du département. Je stocke toutes les docs (obtenir à partir de la base de données) dans un arrayList statique. Toutes les X heures, j'ai les arrayList reconstruit basé sur le nouveau doc (le cas échéant) à partir de la base de données. Il y a aussi une variable statique de contrôle pour reconstruire ce tableau ou non, de fixer et d'annuler en une méthode qui ne la reconstruction de la tâche. Chaque navigateur web frappé le serveur va créer cette classe de l'instance, mais le doc arrayList et que la variable de contrôle est partagé entre toutes les instances de classe.

Trouver des Bogues outil se plaint que "Écrire à champ statique someArrayName et someVariableName à partir de la méthode d'instance someClassMethod". Semble que ce n'est pas la bonne chose à faire (laisser instance de la classe de la méthode d'écriture de champ statique). Quelqu'un a de bons conseils sur la façon de contourner ce problème ? Merci.

A-t-elle à être statique?
Genre oui. Depuis chaque coup (une nouvelle session ou de la nouvelle vue si JSF2.0) va générer une instance de classe, je ne veux pas créer de nombreux de nombreux dupliqué arrayList contient les mêmes docs. Merci.
Charles: vous voulez un singleton "gestionnaire" de l'objet que les instances peuvent se référer. À l'aide d'une instance statique pour mettre en œuvre le singleton a quelques passages délicats effets secondaires. La meilleure façon est de créer un gestionnaire unique de l'objet, et le point chacun de vos instances pour que d'une certaine façon. Si vous travaillez dans un cadre qui crée votre cas (vs vous en cours d'exécution java vous-même), de rechercher comment créer des objets singleton. Tomcat, par exemple, a un certain type de contexte que vous pouvez lire/écrire, comme une façon de traiter avec la persistance d'un état, mais je ne suis pas familier avec elle.
Merci pour l'aide. J'ai ajouté une classe singleton, là, de reconstruire la documentation statique de l'arbre ou static arraylist toutes les X heures. Depuis que je suis en utilisant JSF JSF PhaseListeners sont partagés par tous les JSF web demandes, alors, j'ai mis de l'instanciation de classe singleton dans une phaseListener, a bien fonctionné. Bien que, il y a un thread d'accès risque de tout arbre en cours de reconstruction, mais je peux avoir l'arbre le temps de reconstruction mis à minuit, et l'arbre est en lecture seule. Notre trafic est faible, de sorte que probablement va être OK.

OriginalL'auteur Charles | 2010-12-16