2013-02-20 4 views
3

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

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

Любые предложения/комментарии. Благодарю.

ответ

2

Что касается вашего первого вопроса, это зависит от типа ресурса. Для ресурса classpath вы можете переопределить файл в любом каталоге с более высоким приоритетом в механизме загрузки класса вашего сервера приложений (например, $ 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, например, наложения на войну или классификаторы. Вот an interesting link.

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

С уважением

+0

@BalusC отметил здесь: http://stackoverflow.com/questions/25928486/tomcat-include-another-xml-file-to-web-xml, что ЛИЦО подход является уязвимость XXE и планируется запланировать. Я определенно не пошел бы по этому пути. https://bugzilla.redhat.com/show_bug.cgi?id=1069911 – JoshC13