- PVSM.RU - https://www.pvsm.ru -

Облегчаем вес приложения при деплое на сервер приложений Apache Tomcat

Очень часто вес приложения, которое мы выкладываем на сервер достигает неприлично больших размеров из-за включения в него всех нужных зависимостей. У меня в конечном итоге приложения занимают от 20 до 50 метров. Деплой таких war-ов на удаленный сервер, на Tomcat, дело не одной минуты, а при плохой связи и вовсе становится проблематичным. Класть библиотеки в ${tomcat.home}/lib дело очень неблагодарное и зачастую опасное. Мы на фирме немного погуглили и нашли очень приятное решение на DZone. Хочу с вами поделиться…

Сразу хочу сказать, что метод подходит прежде всего тем, кто разводит своих котов, а не пользуется услугами хостеров… хотя, тут все зависит какое хостер [1] предлагает решение.

Один человек, некто Dapeng Liu, внимательно почитав документацию по API Tomcat, реализовал очень библиотечку, которую можно взять тут [2]. Фактически библиотека представляет из себя имплементацию загрузчика приложений для кота.

Как это работает:

  1. Кладете данную библиотеку в ${tomcat.home}/lib
  2. В ${catalina.home} создается папка repo. В ней создаются папки с репозитариями. Например, когда используется hibernate, идет зависимость сразу от нескольких библиотек. Создаем директорию ${catalina.home}/repo/hibernate_3.3.0, в которую складываем все нужные библиотеки. Можно создать репозитарий сразу конкретного проекта и засунуть туда сразу все нужные библиотеки.
  3. Поправить описание контекста для вашего приложения. Теперь он должен выглядеть следующим образом:
    <Context path="/testapp">
    <Loader className='com.spiralcomms.tomcat.WebappLoader' />
    <lib>spring_2.5.6</lib>
    <lib>hibernate_3.3.0</lib>
    </Context>
  4. Деплой приложения будет осуществляться указанным загрузчиком. При старте деплоя загрузчик будет искать в контексте все теги lib, находить по ним репозитории в папке ${catalina.home}/repo и включать в загрузку

Таким образом приложения резко худеют с 20-50 метров до полутора — двух, что несказанно влияет на скорость его заливки на сервер.

Конечно, такой процесс накладывает ограничение на разработчика. При выкладывании приложений он должен знать — добавились ли какие-нибудь библиотеки в приложение, чтобы обновить репозитарий.

Лично меня метод очень выручает когда до сервера слабый канал и идет плотная работа с заказчиком на предмет правок приложения. Требуется вносить правки и выкладывать их на сервер до 20 раз на день.

P.S. Оригинал описания найденного решения можно почитать тут [3].

Автор: alexey_lahtadir


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/3606

Ссылки в тексте:

[1] хостер: https://www.reg.ru/?rlink=reflink-717

[2] тут: http://java.dzone.com/sites/all/files/com.spiralcomms.tomcat.WebappLoader_0.zip

[3] тут: http://java.dzone.com/articles/extending-tomcat-webapploader