Jax-rs,Jersey在启动时初始化方法

时间:2014-05-12 20:34:55

标签: java jersey jax-rs

我有这样的代码:

@Path("/test")
public class MyServlet {
    static final Dictionary stuff = new Hashtable();

    @GET
    public Response response(@QueryParam....)
        throws FileNotFoundException {


         File directory = new File("test\");
         File[] directoryListing = directory.listFiles();
                 while .......

我想做这个部分我打开文件并在启动时将它们放在我的字典中,而不是每个请求,我该怎么做?所以我稍后可以在响应方法中使用字典。

1 个答案:

答案 0 :(得分:3)

您可以使用静态初始化块,它将在加载类后运行:

public class MyServlet {

    static final Dictionary stuff = new Hashtable();

    static {
        // load files
    }

    // ...
}

这种技术对于jax-rs / jersey或任何其他框架并不特殊,它是一种语言功能。


如果您希望以后能够再次调用它,请将代码移动到某个方法:

public class MyServlet {

    static final Dictionary stuff = new Hashtable();

    static {
        // load at startup
        reloadDictionary();
    }

    // call this whenever you want to reload the files
    static void reloadDictionary() {
        // reload files
    }

    // ...
}