Jetty, работающий как служба Windows, не очищает временный файл после завершения работы - PullRequest
0 голосов
/ 09 июля 2019

Я использую Jetty 9.4.11.v20180605 в качестве службы Windows с procrun.Когда я запускаю этот сервис, Jetty распаковывает войну во временную папку.Но когда я закрываю службу, Jetty не удаляет эти файлы самостоятельно.

Чтобы предотвратить поведение при запуске, я изменил start.ini и установил для jetty.deploy.extractWars значение false.И он делает то, что должен делать, но когда я вызываю веб-приложение, я получаю HTTP ERROR 503. (Служба недоступна).

Второй попыткой было настроить WebAppContext в xml-файле следующим образом:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
   <Set name="persistTempDirectory">false</Set>
</Configure>

Как описано здесь , я записал его в файл с именем jetty-web.xml, поместил в папку WEB-INF моего веб-приложения, и он работает, но когда я вызываювеб-приложение в браузере, оно просто показывает мне структуру папок моего веб-приложения.То же самое происходит, когда я помещаю строку ниже в файл jetty-web-cdi2.xml для конфигурации сервера.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 17 июля 2019

Может быть, пристань хочет сделать это, но на самом деле это не так в моем случае. Мой клиент перезапускает сервер, на котором веб-приложение запускается каждую ночь, поэтому временная папка jettys становится достаточно большой без какой-либо очистки. Поэтому я должен найти обходной путь для этого, и у меня есть:

Я использую временную папку Windows, чтобы позволить пристани распаковать войну. Вы можете получить этот пользовательский каталог, набрав% TMP% в командной строке. Эта папка не будет автоматически очищена стандартными настройками в Windows. Но вы можете вручную очистить его с помощью инструмента очистки диска в Windows. В Windows 10 вы также можете включить автоматическую очистку временной папки: «Настройки Windows» -> «Система» -> «Хранилище» -> включить «Чувство хранилища». Если вы очистите временную папку с помощью инструмента очистки диска, текущая используемая папка и файл свойств jetty не будут затронуты, поэтому после очистки веб-приложение будет работать.

0 голосов
/ 09 июля 2019

Из документации :

Каталог / opt / jetty / temp создан как надежное место для использования Jetty для временных и рабочих каталогов.Многие системы Unix периодически очищают каталог / tmp, такое поведение нежелательно в контейнере сервлета и, как известно, вызывает проблемы.Этот надежный каталог в / opt / jetty / temp решает эту проблему.

Кажется, что существует множество модульных тестов для jetty, которые включают временные файлы, и некоторые специально для проверки, удалены ли временные файлы.

https://github.com/eclipse/jetty.project/blob/9706d70484863a014d3604e5e7cb4af40aa4cb1e/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/MultiPartServletTest.java#L135

Файлы могут иметь свойство, которое будет удалено при выходе

https://github.com/eclipse/jetty.project/blob/9706d70484863a014d3604e5e7cb4af40aa4cb1e/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java#L792

Итак, подведем итог, похоже, что Jettyнужны долгоживущие временные файлы, и лучше всего их очистить после того, как они больше не нужны.

...