Измените web.xml после развертывания

Целесообразно ли изменить web.xml (или, по сути, любой другой файл) на сервере приложений после развертывания? ВСЕ ли серверы приложений раскрывают свою структуру развертывания/каталога?

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


person Sudhanshu Umalkar    schedule 20.02.2013    source источник


Ответы (1)


Что касается вашего первого вопроса, то это зависит от типа ресурса. Для ресурса пути к классам вы можете переопределить файл в любом каталоге, который имеет более высокий приоритет в механизме загрузки классов вашего сервера приложений (например, $CATALINA_HOME/lib, если вы используете Tomcat). Для файла xml, такого как web.xml, вы можете объявить внешний объект в упакованном файле с абсолютным путем, но вы должны быть уверены, что файл будет присутствовать на целевом сервере. Например, ваш упакованный файл web.xml может выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document [
<!ENTITY webEntity SYSTEM 'C:\Temp\web.xml'>
]>
&webEntity;

Таким образом, фактическим содержимым файла web.xml будет содержимое файла C:\Temp\web.xml.

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

Что касается вашего второго вопроса, я бы не стал полагаться на это предположение. Довольно просто изменить развернутый ресурс на сервере Tomcat, но это не так просто на JBoss AS.

person benweet    schedule 13.03.2013
comment
@BalusC отметил здесь: stackoverflow.com/questions/25928486/, что подход ENTITY представляет собой уязвимость XXE и планируется исправить. Я бы точно не пошел по этому пути. bugzilla.redhat.com/show_bug.cgi?id=1069911 - person josh-cain; 02.09.2015