по отношению к файлам конфигурации, я думаю, Ответ Стива пока лучший. Я хотел бы добавить предложение о создании внешних файлов относительно пути установки файла war - таким образом, вы можете иметь несколько установок war на одном сервере с разными конфигурациями.
например. Если мой dev.war
будет распакован в /opt/tomcat/webapps/dev
, то я бы использовал ServletContext.getRealPath
, чтобы найти имя базовой папки и имя папки war, поэтому файлы конфигурации будут жить в ../../config/dev
относительно войны. или /opt/tomcat/config/dev
для абсолютного.
Я также согласен с Биллом о том, чтобы как можно меньше помещать в эти внешние файлы конфигурации. Использование базы данных или JMX в зависимости от вашей среды для хранения столько, сколько это имеет смысл. Конфигурация Apache Commons имеет красивый объект для обработки конфигураций, поддерживаемых таблицей базы данных.
Что касается библиотек, я согласен с unknown иметь все библиотеки в папке WEB-INF/lib
в файле war (в отдельной упаковке). Преимущество заключается в том, что каждая установка приложения является автономной, и у вас могут быть разные сборки войны, использующие разные версии библиотек одновременно.
Недостатком является то, что он будет использовать больше памяти, поскольку каждое веб-приложение будет иметь свою собственную копию классов, загруженную собственным загрузчиком классов.
Если это создает реальную проблему, вы можете поместить файлы jar в папку общей библиотеки для вашего контейнера сервлета ($CATALINA_HOME/lib
для tomcat). Все установки вашего веб-приложения, работающие на одном сервере, должны использовать одни и те же версии библиотек. (На самом деле, это не совсем верно, так как вы можете поместить переопределенные версии в отдельную папку WEB-INF/lib
, если это необходимо, но это становится довольно грязным в обслуживании.)
Я бы собрал автоматический установщик для общих библиотек в этом случае, используя InstallShield или NSIS или эквивалентный для вашей операционной системы. Что-то, что может легко определить, есть ли у вас самый современный набор библиотек, а также обновление, обновление и т. Д.