Singleton Object in Java Web служба

Доброе утро, В настоящее время я разрабатываю веб-приложение Java, которое предоставляет интерфейс веб-службы. Чтобы сохранить глобальный объект в памяти, я использую следующий класс как 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;
    }
}

Я использую вышеупомянутый класс, чтобы иметь один и тот же экземпляр HashMap для всех потоков веб-службы. Класс веб-службы, поддерживающий объект SingletonMap, выглядит следующим образом:

@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();
    }

}

Метод getCouponMapCreationTime() используется для проверки того, что все потоки веб-службы обращаются к одному и тому же объекту. Верен ли описанный выше подход? Как насчет накладных расходов на производительность? Как вы думаете, мне нужны свойства Singleton, или я могу просто использовать статическую HashMap для всех потоков? Если я использую статический HashMap, будет ли он собирать мусор, если ни один поток не активен?

Спасибо за ваше время.

5
задан nick.katsip 19 June 2012 в 07:28
поделиться