取消部署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