Нежелательные файлы jar в tomcat / lib или WEB-INF / lib - PullRequest
5 голосов
/ 17 сентября 2009

В настоящее время я работаю над приложением, которому около десяти лет. Когда я посмотрел файлы jar, связанные с приложением, я увидел множество ненужных jar-файлов и множество разных версий одного jar-файла.

Каковы минусы наличия нежелательных фляг в lib. Какой простой способ найти и удалить их?

Ответы [ 4 ]

8 голосов
/ 17 сентября 2009

Могут возникнуть проблемы, если загрузчик классов решит загрузить классы из другой версии файла JAR, чем вы ожидаете. Такие проблемы обычно трудно отследить. Сервер просматривает jar-файлы в определенном порядке (в алфавитном порядке по имени файла?) И использует первый соответствующий класс / ресурс, который находит. Вероятно, нет никаких гарантий, что самая новая версия jar-файла будет просматриваться первой.

Я не знаю никаких инструментов, которые бы выяснили, какие банки не используются. Это может быть невозможно в общем случае из-за отражения, но некоторая степень автоматической проверки должна быть возможной, по крайней мере, теоретически.

Удаление неиспользуемого файла JAR методом проб и ошибок проблематично, если у вас нет хороших модульных тестов, которые, я сомневаюсь, у вас в вашем десятилетнем приложении. Всегда может быть редкий случай ошибки, который зависит только от старой версии jar, которую вы только что удалили.

1 голос
/ 17 сентября 2009

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

Вы можете узнать, какие пакеты содержит файл jar, используя JarAnalyzer . Это даст вам представление о дубликатах, и вы сможете начать удалять старые версии файлов JAR. Однако эту процедуру необходимо выполнить вручную, методом проб и ошибок. Кроме того, один и тот же пакет может содержаться в двух банках с разными именами и без информации о версиях.

Как уже говорилось, наличие разных версий одной и той же банки может привести к хаосу. Вы не можете знать, какая версия будет фактически использоваться и какие конфликты она приведет к тому или иному приложению. Вот почему вы никогда не должны использовать общую папку Tomcat для jar-файлов приложений. Если вы находитесь в ситуации, когда многие файлы JAR находятся в общей папке, не используйте этот сервер для новых приложений.

0 голосов
/ 17 сентября 2009

Как вы можете решить, какие банки не используются на самом деле используются?

Я бы предложил сделать это полным изменением качества. Вы не представляете, если код, выбранный из набора jar-файлов, затеняет ошибочную реализацию, если вы удалите «устаревший» jar.

0 голосов
/ 17 сентября 2009

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

Если вы имеете в виду фактическую среду развертывания, то любая очистка должна выполняться очень осторожно. Почему бы не попробовать начать заново в новой тестовой среде с чистой установкой Tomcat и развернутыми исполняемыми файлами последней сборки? Посмотрите, хорошо ли это работает, и если да, то, возможно, лишние банки действительно не нужны.

Что касается минусов, я не вижу ничего кроме размера файлов вашего развертывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...