2011-04-25 69 views
0

我正在使用glassfish v2,但我在tomcat中遇到了同樣的問題。glassfish/tomcat Java服務器加載類一次

服務器啓動後,我看到:

sudo jmap -histo:live 14127 | grep KVStore 
6222:    1    24 xxx.xxx.KVStore 

一段時間的使用後,我得到:

sudo jmap -histo:live 14127 | grep KVStore 
7240:    1    24 xxx.xxx.KVStore 
7360:    1    24 xxx.xxx.KVStore 

雖然我猜這事做與如何GlassFish的秤出,這實際上是有問題的,因爲我將KVStore用作內存存儲類。

它是一個單例類具有靜態Hashtable和getter和setter方法:

class KVStore 
    public static KVStore kvstore; 
    public Hashtable hash; 

現在的問題,是一個階級。當我打電話給商店,並得到一個servelet我收到對象就好了。但是,對於兩個類或KVStore,servelet在兩者之間交替,並且在連續調用時永遠不會正確返回。

現在我真的需要將對象存儲在內存中。我如何強制這個類只能加載一次?或者創建一個全局可訪問的哈希表?

最後一件事,我正在部署一個jruby warbled war文件。如果沒有這種可能發生的實際方式,讓我知道,我會考慮一下。

回答

0

好的,fml。最有可能你想這個:

config.webxml.jruby.min.runtimes = 1 
config.webxml.jruby.max.runtimes = 1 

在你的warble.rb並稱它很好。