Где я должен хранить Spring applicationContext.xml в EAR - PullRequest
2 голосов
/ 29 августа 2011

У меня есть классы обслуживания, которые развернуты в EAR без WAR или веб-приложений. В какой структуре папок лучше всего хранить applicationContext.xml?

В настоящее время мы загружаем его как

Resource res = new ClassPathResource("META-INF/applicationContext.xml");

Ответы [ 2 ]

3 голосов
/ 29 августа 2011

Это такое же хорошее место, как и любое.Это не имеет большого значения, и я не знаю каких-либо соглашений для этого.

0 голосов
/ 15 февраля 2014

Если вы используете Spring в веб-приложении, вам никогда не следует загружать ClasspathXmlApplicationContext вручную.Ваш контекст будет контекстом веб-приложения, а не контекстом приложения classpath и будет загружен автоматически, если вы добавите в ваш файл web.xml следующее:

Код:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-config.xml</param-value>
</context-param>

при условии, что выОсновной конфигурационный файл Spring называется spring-config.xml и находится в папке WEB-INF.

Загрузка контекста classpath программным способом всегда некорректна для веб-приложения, у вас должен быть один контекст, загруженный слушателем и (необязательно)еще один контекст, загружаемый DispatcherServlet (если вы используете Spring Web Mvc в качестве вашей инфраструктуры MVC).Я предлагаю вам начать с чтения некоторой документации и попробовать пример Petclinic, чтобы получить представление о том, как правильно использовать Spring в веб-приложении.

Кроме того, ваша стратегия упаковки ушей неверна;ваша конфигурация Spring зависит от веб-приложения, поэтому вы должны поместить свои конфигурационные файлы Spring в WAR, в корень веб-приложения (вероятно, лучшее место где-то в WEB-INF, наряду с web.xml и другими дескрипторами).Если у вас есть ресурсы, такие как классы, используемые как ejb, так и webapp, вы должны упаковать эти классы в jar, поместить этот jar в каталог lib на вашем ухе и добавить запись Class-Path для jar в MANIFEST.MF webapp &каждый из ejb банок.Если у вас есть файлы конфигурации со свойствами, зависящими от среды (например, jdbc config и пути к дискам), вы не должны упаковывать их в ухо, а вместо этого позволить приложению считывать их извне из файловой системы (PropertyPlaceholderConfigurer - ваш лучший способ).

Для начала я предлагаю вам использовать функцию создания ушей Eclipse, чтобы увидеть, как должно быть упаковано ваше веб-приложение, прежде чем вы начнете использовать ant для создания своего проекта.

Я также предлагаю вам рассмотреть Maven в качестве компиляции сборки- пакетная стратегия, поскольку это позволит автоматизировать и стандартизировать проект, а архетип веб-приложения maven позволит вам мгновенно создать правильный шаблон для веб-приложения j2ee.

...