Развертывание приложения Tomcat с различными записями среды и ссылками на ресурсы - PullRequest
1 голос
/ 12 октября 2011

Я разработал веб-приложение, которое работает на сервере Apache Tomcat 7.0.14 локально (моя среда разработки).Я готов перенести свое приложение на рабочий узел, но у меня возникают проблемы с управлением отдельными значениями записей для каждой среды.

Мой текущий процесс сборки полностью выполняется в моей среде IDE Netbeans 7.0.1.Он использует Ant, который, как я признаю, мне не знаком, и генерирует файл .war.Я могу выполнить развертывание на своем рабочем хосте, скопировав этот файл .war.Приложение работает, хотя в нем отсутствуют все правильные данные производственной конфигурации.

Я написал свое приложение как разумно настраиваемое.Как и в большинстве приложений, различные данные должны различаться в зависимости от среды разработки и рабочей среды.Я могу разделить все эти данные в файле дескриптора развертывания (web.xml) или файла конфигурации контекста (context.xml), а затем прочитать его в моем приложении.Детали значений не имеют особого значения, но в качестве примера есть хотя бы одно ссылочное значение ресурса, которое служит источником данных.

Что я не могу сделать, так это легко поддерживать отдельные значения для моегоотличные конфигурации.Я надеюсь получить вторую копию файла web.xml или context.xml, которую я мог бы использовать для создания отдельной копии файла .war для развертывания в рабочей среде.Я также был бы счастлив с решением, которое позволяет мне вставлять какие-то переменные ($ {}?) В этот файл.Тем не менее, я должен быть в состоянии сохранить сами данные в файле, потому что будет большое количество записей.Поскольку данные в любом случае будут в файлах, я подумал, что естественным решением будет второй файл web.xml или context.xml.

В идеале, я бы хотел простое решение в Netbeans.Без этого, инструкции для этого в Ant, вероятно, будет достаточно.Любая соответствующая терминология также будет полезна.Я потерял чтение о «контекстах», «средах» и «развертываниях» в tomcat, которые имеют значения, отличные от того, что я ищу.Наконец, если это не может быть сделано с помощью одного из них, есть ли инструмент, который может помочь?Написание отдельного сценария оболочки было бы далеко от идеала.

Трудно поверить, что нет тривиального решения для этого.Это похоже на то, что нужно учитывать при каждом развертывании.Разве не поэтому записи и ссылки существуют в XML?Однако я ничего не мог найти по этому поводу в руководстве Tomcat.

1 Ответ

2 голосов
/ 12 октября 2011

У вас есть много вариантов.Для конкретных свойств сборки я бы рекомендовал создавать файлы свойств для каждой среды и загружать их с помощью задачи property в Ant.Так, например, с учетом гипотетических сред dev , qa , prod , вы можете иметь файлы свойств с именами build. {env} .свойств и загрузите их следующим образом:

build.xml

<property file="build.${environment}.properties"/>

, вызываемый как:

ant -Denvironment = dev

Это дает вам некоторую полезную замену свойства времени сборки.Но, конечно, вас больше интересует замена переменных в файлах вашего проекта.Один из способов сделать это с помощью Ant Replace Task .Пример использования:

<target name="prepare-resources">
    <replace dir="${targetdir}" replacefilterfile="vars.${environment}.properties">
        <include name="**/*.txt"/>
     </replace>
</target>

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

И, наконец, вы также можете выбрать целый набор файлов, помеченных идентификатором среды, и «продвигать» их внужный артефакт сборки с помощью Ant Copy Task .Например:

<target name="promote-resources">
    <copy todir="${targetdir}">
        <fileset dir="${sourcedir}"/>
        <mapper type="regexp" from="(.*).${environment}.(.*)" to="\1.\2"/>
    </copy>
</target>

Вы должны заполнить targetdir и sourcedir по мере необходимости.Приведенный выше фрагмент будет отображать все файлы типа web.dev.xml или context.dev.xml до web.xml и context.xml.

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

...