Singleton Objet dans Java Web service

Bon matin,
Je suis en train de développer une application web java qui expose une interface de service web. Afin de garder un objet global dans la mémoire, j'utilise la classe suivante comme un Singleton:

public class SingletonMap {
    private static final SingletonMap instance = new SingletonMap();
    private static HashMap couponMap = null;
    private static long creationTime;

    private SingletonMap() {
        creationTime = System.currentTimeMillis();
        couponMap = new HashMap();
    }

    public static synchronized SingletonMap getInstance() {
        return instance;
    }

    public static long getCreationTime() {
        return creationTime;
    }
}

Je suis à l'aide de la classe ci-dessus afin d'avoir la même instance de la table de hachage pour tous les threads du service web. La classe de service Web qui maintient la SingletonMap objet est le suivant:

@WebService()
public class ETL_WS {
    private String TOMCAT_TEMP_DIR;
    private final int BUFFER_SIZE = 10000000;
    private static SingletonMap couponMap;
    private static SingletonProductMap productCategoryMap;
    private String dbTable = "user_preferences";

    public ETL_WS() {
        Context context = null;
        try {
            context = (Context) new InitialContext().lookup("java:comp/env");
            this.TOMCAT_TEMP_DIR = (String) context.lookup("FILE_UPLOAD_TEMP_DIR");
        }catch(NamingException e) {
        System.err.println(e.getMessage());
    }

    public long getCouponMapCreationTime() {
        return couponMap.getCreationTime();
    }

}

La raison pour laquelle j'ai la méthode getCouponMapCreationTime() est de vérifier que tous les fils de la toile de service ont accès au même objet. Est l'approche ci-dessus est correcte? Comment sur les performances des frais généraux? Pensez-vous j'ai besoin de le Singleton propriétés, ou pourrais-je utiliser une table de hachage statique pour tous les threads? Si j'utilise une table de hachage statique, est-ce que ça va être des ordures collectées dans le cas où aucun fil est active?

Je vous remercie pour votre temps.

OriginalL'auteur nick.katsip | 2012-06-19