Что является наиболее распространенным стандартом в веб-приложении Java для включения ресурсов в путь к классам? - PullRequest
1 голос
/ 28 ноября 2010

Я использую интернационализацию с помощью Spring, и файл свойств должен находиться в пути к классам. У меня также есть несколько XML-файлов, которые должны быть в пути к классам. Допустимо ли просто включить эти ресурсы в «src» в подкаталог, а затем разрешить их сборку в classpath, или лучше добавить другую папку в classpath во время запуска? Я использую Ant, но, судя по всему, именно этот подход и использовал Maven (все под src или test). Я ищу наиболее широко принятые отраслевые стандарты или лучшие альтернативы. Спасибо!

Ответы [ 2 ]

1 голос
/ 28 ноября 2010

Допустимо ли просто включить эти ресурсы в "src" в подкаталог, а затем разрешить их сборку в classpath

Зависит от единственной цели рассматриваемого ресурса. При таком подходе любое незначительное редактирование в таком файле ресурсов, таким образом, потребует полной перестройки, повторного развертывания и перезапуска.

Это не обязательно может нанести вред однократному запуску и файлам конфигурации всего приложения, таким как web.xml и application.xml и консортам, поскольку это обычно влияет (или зависит от) изменений в исходном коде Java, которые требуют полной перестройки / перераспределить / и так далее.

Но в случае файлов времени выполнения, таких как файлы свойств i18n и специфические для среды файлы конфигурации (которыми может / мог бы управлять не разработчик, например, serveradmin или клиент), нецелесообразно упаковывать его в веб-приложение. Это требует знаний о том, как восстановить веб-приложение после внесения изменений. Вы бы предпочли использовать его так, чтобы для отражения изменений в конфигурации потребовался только перезапуск веб-приложения, или, может быть, даже не совсем, например, для ResourceBundle, который автоматически перезагрузится.

Обычно я сам помещаю такие файлы по фиксированному пути вдоль контейнера сервлетов и добавляю этот путь в путь к классам времени выполнения контейнера сервлетов. Например, Tomcat настраивается как свойство shared.loader в /conf/catalina.properties. Э.Г.

shared.loader=/var/webapp

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

0 голосов
/ 28 ноября 2010

Все, что вы помещаете в каталог WEB-INF / classes, автоматически помещается в CLASSPATH.

Обычно я помещаю только файлы .java в каталоги /src и /test.Любые ресурсы, которые я поместил в другом месте, должны заканчиваться на WEB-INF / классах.Это либо моя IDE (IntelliJ), либо Ant, которые помещают их туда при создании файла WAR.

Я бы порекомендовал следовать примерам Spring и размещать ресурсы там, где они делают.

Например, есливы используете Velocity в качестве движка шаблонов, вы увидите, что конфигурация Spring позволяет вам помещать их в / WEB-INF / vm_views.

Свойства помещаются в WEB-INF / classes.

Проверьте документы Spring для примеров.

...