Подтвердить что ты не робот

Что такое атрибут antiJARLocking?

что означает атрибут antiJARLocking? Какое это имеет значение, когда я обращаю его в истину/ложь?

Я видел этот атрибут в файле context.xml веб-приложения:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/poll">
 <Resource name="jdbc/PollDatasource" auth="Container"
           type="javax.sql.DataSource"
 // etc etc
</context>
4b9b3361

Ответ 1

Tomcat 7

Из документации Tomcat 7.0 для настройки контекста:

"antiJARLocking - если true, загрузчик классов Tomcat примет дополнительные меры, чтобы избежать блокировки файлов JAR при обращении к ресурсам внутри JAR через URL-адреса. Это повлияет на время запуска приложений, но может оказаться полезным на платформах или конфигурациях, где может происходить блокировка файлов. Если не указано иное, значением по умолчанию является false. "

(Проблема, которую они пытаются решить... я думаю... заключается в том, что заблокированный JAR файл остановит работу, например, горячее повторное развертывание.)

Прочитайте документацию для получения дополнительной информации.

Tomcat 8 и позже

antiJARLocking заменяется атрибутом antiResourceLocking в Tomcat 8 и более поздних версиях. В документации упоминаются некоторые примечательные побочные эффекты установки этого атрибута.


Смотрите также:

  • http://stackoverflow.com/q/22480442/642706... в котором отмечается, что включение этой функции может привести к утечке памяти permgen (или в Java 8+ metaspace), если вы выполняете горячее повторное развертывание.

Ответ 2

Windows любит блокировать файлы во время загрузки классов, тем самым предотвращая их удаление вручную или открытие другим приложением. Это также вызывает проблемы при развертывании и перераспределении войны. В Tomcat, когда вы укажете <Context antiJARLocking="true"/>, это не позволит Windows получить блокировку на ваших банках