У меня есть приложение, которое использует встроенный причал и прекрасно работает.embedded jetty не очищает временный каталог полностью (сохраняет lib/*. Jar)
У меня возникли проблемы с временными каталогами, создаваемыми причалом. Когда приложение развернуто, он создает временную директорию с извлеченной войной (jetty-0.0.0.0-8888-app.war-_app-any-4643933123854766078.dir), все хорошо. Но когда я удаляю/заменяю эту войну другой версией (в том же контексте), она создает еще одну временную директорию, а другая не удаляется полностью. Я вижу, что jetty удаляет все css, html-файлы, но web-inf/lib/*. Jar не удаляется.
Значение webAppContext.setPersistTempDirectory
установлено на false, я уже проверен.
Я уже пытался изменить временную директорию, используемую причалом.
Вот мой WebAppProvider:
WebAppProvider webAppProvider = new WebAppProvider();
webAppProvider.setMonitoredDirName("webapps");
webAppProvider.setScanInterval(1);
webAppProvider.setExtractWars(true);
webAppProvider.setDefaultsDescriptor("webdefault.xml");
webAppProvider.setTempDir(new File("work"));
String webDefault = Thread.currentThread().getContextClassLoader().getResource("webdefault.xml").getPath();
if (webDefault != null) {
File f = new File(webDefault);
if (f.exists() && !f.isDirectory()) {
webAppProvider.setDefaultsDescriptor(webDefault);
}
}
Вот DeploymentManager:
DeploymentManager deploymentManager = new DeploymentManager();
deploymentManager.setContexts(contextHandlerCollection);
deploymentManager.setContextAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",
".*/[^/]*servlet-api-[^/]*\\.jar$|.*/javax.servlet.jsp.jstl-.*\\.jar$|.*/org.apache.taglibs.taglibs-standard-impl-.*\\.jar$");
deploymentManager.addAppProvider(webAppProvider);
Настройка сервера:
server = new Server(8888);
server.setStopAtShutdown(true);
server.setStopTimeout(5000);
handlerCollection.addHandler(contextHandlerCollection);
handlerCollection.addHandler(new DefaultHandler());
server.setHandler(handlerCollection);
server.addBean(deployManager);
я заметил, что я только могу вручную удалить каталог, когда я остановить пристань. Я думаю, что это единственный способ освободить процесс, который использует банки, и позволить мне полностью удалить.
Обс: Я не хочу останавливать сервер, чтобы удалить папки.
Заранее спасибо.
это простое приложение Java или не использует рамку. Как остановить приложение при развертывании новой версии? –
Эй, да, я использую весну. Но я не останавливаю приложение для развертывания новой версии. Jetty наблюдает за изменением в каталоге webapps и делает для меня горячее развертывание, мне просто нужно заменить файл. – pecci
ok; поэтому я думаю, что вы можете расширить 'org.eclipse.jetty.deploy.bindings.StandardStopper' или' oejdbStandarUndeployer' и передать его в 'DeploymentManager.addLifeCycleBinding (привязка к AppLifeCycle.Binding)' –