частые обновления приложения Tomcat - PullRequest
0 голосов
/ 18 марта 2012

У меня есть приложение, которое работает на сервере Tomcat 7 на компьютере с Windows.На его нынешнем этапе мне приходится часто обновлять и исправлять его.Всякий раз, когда мне нужно обновить приложение, я делаю все это:

  1. Создайте новый файл war (используя ant) ​​на моем компьютере для разработки Linux;
  2. Перейдите на сервер Windows, остановитеслужба Tomcat;
  3. загрузите файл с моего компьютера на компьютер Windows, поместите его в webapps;
  4. удалите папку старого приложения из webapps;
  5. удалите старое приложениепапка под рабочим каталогом / Catalina / localhost (в противном случае она сохраняет в кэше старую версию).
  6. Перезапустите службу Tomcat.

Я уверен, что есть способ сделать все это автоматически.Что это?

Ответы [ 3 ]

2 голосов
/ 19 марта 2012

С гибким развертыванием kwatee (я разработчик) вы можете настроить автоматическое развертывание веб-приложений на tomcat всего за несколько минут (см. Учебник ). Затем вы запускаете развертывание либо по требованию через простой веб-интерфейс, либо автоматически, используя задачу kwatee ant или плагин kwatee maven. О, это тоже бесплатно.

2 голосов
/ 18 марта 2012

Резюме: я бы потратил некоторое время на настройку схемы сборки и развертывания. Это немного впереди, но общее решение, которое может расти по мере необходимости после его установки.

Вы можете выполнить шаг 1 с помощью скрипта Ant. Сначала вы установите Ant и напишите короткий build.xml, включающий что-то вроде в этом примере . При правильной установке Ant вы просто переходите в каталог, где находится build.xml, и запускаете 'ant'.

На этапах со 2 по 6, поскольку вам необходимо очистить цель, управлять службами и т. Д., Я бы посмотрел на создание установщиков MSI или исполняемых файлов. Мой первый выбор инструмента MSI - Advanced Installer . В разделе вы увидите список функций , которые бесплатная версия позволяет вам контролировать (запускать, останавливать, устанавливать, удалять) службы Windows при установке и удалении.

(Примечание: мы использовали Advanced Installer Enterprise уже четыре года. Он постоянно совершенствуется и является продуктом исключительно высокого качества. Вы не будете разочарованы.)

Вы также можете управлять созданием MSI через Ant. Вот фрагмент из моего build.xml, который вызывает пару макросов для компиляции и развертывания одного из поддерживаемых мной продуктов:

<target name="myproduct-installer" depends="unzip-myproductdocs">
    <build-ai-installer product.name="MyProduct" installer.path="setup/installs/MyProduct" project.file="MyProduct.aip" />
</target>
<target name="release-myproduct-installer">
    <release-AI-installer product.name="MyProduct" installer.path="setup/installs/MyProduct" product.path="${some-predefined-target}" />
</target>

Вот макросы, использованные выше:

<macrodef name="build-ai-installer">
    <attribute name="product.name" />
    <attribute name="installer.path" />
    <attribute name="project.file" />
    <sequential>
        <echo message="Making installer at @{installer.path}" />
        <mkdir dir="@{installer.path}/newInstall" />
        <exec dir="@{installer.path}" executable="${env.ADVANCEDINSTALLER}" failonerror="true">
            <arg line="/edit @{project.file} /SetVersion ${product.version}" />
        </exec>
        <exec dir="@{installer.path}" executable="${env.ADVANCEDINSTALLER}" failonerror="true">
            <arg line="/build @{project.file}" />
        </exec>
    </sequential>
</macrodef>

<macrodef name="release-AI-installer">
    <attribute name="product.name" />
    <attribute name="installer.path" />
    <attribute name="product.path" />
    <sequential>
        <copy todir="@{product.path}">
            <fileset dir="@{installer.path}/newInstall" />
        </copy>
    </sequential>
</macrodef>

В этих макросах используется переменная среды Windows с именем env.ADVANCEDINSTALLER. Более простые настройки сборки просто установят свойство Ant и сбросят 'env.' Префикс:

<property name="ADVANCEDINSTALLER" value="path-to-AdvancedInstaller.com" />

Этот уровень автоматизации приносит дивиденды, как только он запущен и работает. Но если это больше, чем нужно (я не удивлюсь), этот ответ может помочь.

1 голос
/ 19 марта 2012

Есть способы сделать это.

Одним из способов является использование системы непрерывной интеграции, например Jenkins . Это позволит вам строить войну регулярно или после каждого коммита в исходный репозиторий.

Затем есть плагин Jenkins Deploy , который можно использовать для развертывания войны на работающем экземпляре Tomcat после его создания. В нем используется стандартное веб-приложение менеджера Tomcat, поэтому его необходимо установить в Tomcat с настройкой имени пользователя и пароля.

Обратите внимание, что частое повторное развертывание работающего Tomcat, к сожалению, является простым способом выяснить, что ваше веб-приложение теряет память при отключении. OutOfMemory и MemoryLeakProtection статьи в вики Tomcat - полезные материалы для чтения. Автоматическая перезагрузка Tomcat может быть полезной мерой временного ограничения.

...