在java Web服务中只加载一次文件和对象

时间:2012-06-28 10:30:47

标签: java web-services

我有一个restfull webservice,需要加载训练有素的模型文件并创建一些其他对象,这需要很多时间。因此,我只需要执行一次(启动Web服务时)。目前,系统在每次Web服务调用时加载经过训练的文件和一些其他对象,并且成本很高。你能告诉我如何处理这个问题吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Singleton模式。它用于确保仅创建一次某些资源。所以基本上,你可以有一个类,其目的是实例化这些文件并让webservices调用这个类,就像这样(取自Wikipedia):

public class Singleton {
    private static volatile Singleton instance = null;
    private static File file1;
    ... 


    private Singleton() 
    {  
        //Load whatever you need here.
    }

    public static Singleton getInstance() {
            if (instance == null) {
                    synchronized (Singleton.class)
                            if (instance == null) {
                                    instance = new Singleton();
                            }
            }
            return instance;
    }

   ...
   //Other getter and setters for your files and other objects

}

然后,在您的网络服务中,您可以这样做:

...
Singleton.getInstance().getSomeFile();
...