我有一些使用嵌入式码头实现的服务,这些服务在Windows Server中运行时会导致磁盘空间问题。问题似乎是服务器线程完成或服务器进程停止时都没有清理临时文件和文件夹。
例如,如果我使用Windows上的本地用户帐户运行服务,则会在C:\ Windows \ Temp中为我正在运行的每个服务创建一个文件夹,其名称模式为axis-。在这些文件夹中是该特定服务的.jar文件的副本-该服务已处理的每个请求的副本。
由于我没有使用servlet容器(没有WAR文件)进行部署,因此我没有配置文件来控制Jetty的行为。还有其他编程方式来控制临时文件的清理吗?
这是我的服务编码的一个例子-它们都是相同的模式。
Server quoteServer = new Server(ratingServerPort);
HandlerList handlers = new HandlerList();
PingHandler pingHandler = new PingHandler();
pingHandler.setLogger(log);
handlers.addHandler(pingHandler);
QuoteHandler quoteHandler = new QuoteHandler();
quoteHandler.setLogger(log);
quoteHandler.setMongo(mongo);
quoteHandler.setMorphia(morphia);
quoteHandler.setMongoHostname(mongoHostname);
quoteHandler.setMongoPort(mongoPort);
quoteHandler.setMileageHost(mileageHost);
quoteHandler.setMileagePort(mileagePort);
quoteHandler.setTransitURL(transitURL);
quoteHandler.setAuthKeys(authKeys);
handlers.addHandler(quoteHandler);
BangitHandler bangit = new BangitHandler();
handlers.addHandler(bangit);
quoteServer.setHandler(handlers);
try {
quoteServer.start();
quoteServer.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:0)
仅基于WebAppContext
的部署会在Jetty自身内部创建临时文件。
(由servlet规范和内部WebInfConfiguration
类提供)。
如果文件名以axis-
开头,则可能是项目可能具有的轴库正在创建的临时目录。
查看有关此问题的以往答案(answer 2 by @anton和answer 3 by @code-mode似乎比您所接受的答案更适合您的特定用例)……