Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 泽西岛2号需要清理资源_Java_Jersey 2.0 - Fatal编程技术网

Java 泽西岛2号需要清理资源

Java 泽西岛2号需要清理资源,java,jersey-2.0,Java,Jersey 2.0,我有一个在其构造函数中创建对象的单例资源,当应用程序关闭,服务器终止时,我需要释放这些对象。泽西岛2号是怎么做到的 @Path("/") @Singleton public class MyResource { private Map<String, MyObject> cache; public MyResource() { cache = new ConcurrentHashMap<>(); // at some po

我有一个在其构造函数中创建对象的单例资源,当应用程序关闭,服务器终止时,我需要释放这些对象。泽西岛2号是怎么做到的

@Path("/")
@Singleton
public class MyResource {
    private Map<String, MyObject> cache;

    public MyResource() {
        cache = new ConcurrentHashMap<>();
        // at some point I need to remove all entries
        // from the map and close all MyObject objects there
        //
        // the reason is because MyObject might have files open
        // and I need to close the files
        //
        // where can I do that?
    }
    ...
}
@Path(“/”)
@独生子女
公共类MyResource{
私有地图缓存;
公共资源(){
cache=新的ConcurrentHashMap();
//在某个时候,我需要删除所有条目
//从贴图中选择并关闭此处的所有MyObject对象
//
//原因是MyObject可能已打开文件
//我需要关闭这些文件
//
//我在哪里可以这样做?
}
...
}

球衣支持
@PreDestroy
生命周期挂钩。因此,只需在类中用
@PreDestroy
注释一个方法,Jersey将在释放资源之前调用它

import javax.annotation.PreDestroy;

@Path("/")
@Singleton
public class MyResource {
    private Map<String, MyObject> cache;

    public MyResource() {
    }

    @PreDestroy
    public void preDestroy() {
        // do cleanup
    }
}
import javax.annotation.PreDestroy;
@路径(“/”)
@独生子女
公共类MyResource{
私有地图缓存;
公共资源(){
}
@发情前期
公共空间发情前(){
//清理
}
}

您需要更具体地说明“在某个时候”。在哪一点?容器管理生命周期的全部要点是,这些点被定义并成为配置项。手动调用“立即释放/清除这些”方法完全滥用了整个想法。谢谢。我将编辑这个问题。(另外,一般来说,您可能不希望容器管理的生命周期打开/关闭文件。这不是CDI的用途。)我是Java开发新手,请您提供更多关于您所谈论内容的信息?