取消部署Java EE应用程序时,我需要关闭一些流,以避免每次取消部署server.log中的异常页面。例外说明:“输入流已完成确定或被强制关闭而未明确关闭”。我知道如何关闭(使用close()方法),但是我不知道何时关闭。

finallize()来不及了,@ PreDestroy不仅在取消部署之前被调用,而且在正常操作模式下也被调用。取消部署时,应用程序如何知道?

编辑:
我在创建过程中称其为:

    decisionLogger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(
    ksession,
    config.getString("rules.logfilename"),
    config.getInt("rules.loginterval"));


DecisionLogger的类型为KnowledgeRuntimeLogger,仅具有close()方法。在引擎盖下工作的线程没有吸气剂。要轻轻关闭它,我需要调用close方法,但是什么时候?

最佳答案

将finalize()方法添加到记录器或引起问题的任何类。从中关闭流。除非您退出System.exit(),否则它将运行。如果正在调用System.exit,则可以使用Runtime.addShutdownHook

09-25 22:31