Проблема при выполнении проекта Spring Web в Eclipse на сервере Tomcat - PullRequest
0 голосов
/ 10 марта 2010

У меня есть веб-проект Spring, который использует Maven для компиляции / сборки. Нет проблем в построении проекта. Я пытаюсь запустить проект в Eclipse (3.3.2) на сервере Tomcat (v6).

В рамках проекта Spring у меня есть файл spring-servlet.xml в каталоге WEB-INF. Этот файл включает в себя другой XML-файл ресурса, имеющий конфигурацию источника данных.

<import resource="classpath:${datasourceInclude}.xml"/>

Теперь, когда проект компилируется с использованием Maven, он разрешает переменную $ {datasourceInclude} и устанавливает для нее подходящие значения, в результате чего получается spring-servlet.xml с правильными значениями.

<import resource="classpath:datasourceLocal.xml"/>

Но когда я пытался запустить проект в Eclipse (Tomcat), я получаю следующую ошибку:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath:${datasourceInclude}.xml]
Offending resource: ServletContext resource [/WEB-INF/spring-servlet.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [${datasourceInclude}.xml]; nested exception is java.io.FileNotFoundException: class path resource [${datasourceInclude}.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
...
...

Обычно, когда я запускаю Tomcat, он пытается выбрать файл spring-servlet.xml из папки / src / main / webapp / WEB-INF, в которой есть переменная $ {datasourceInclude}.

Может кто-нибудь сказать мне, как решить эту проблему, чтобы мне не пришлось менять spring-servlet.xml и добавлять значение жесткого кода вместо переменной $ {datasourceInclude}.

Ответы [ 2 ]

1 голос
/ 10 марта 2010

Попробуйте добавить war:inplace в список целей, выполненных для фильтрации ресурсов на странице конфигурации проекта Maven.

Щелкните правой кнопкой мыши в своем проекте, затем перейдите к Свойства> Maven> Отображение жизненного цикла и добавьте war:inplace к Целям, чтобы вызвать изменения ресурса как показано ниже:

alt text

0 голосов
/ 10 марта 2010

Кто отвечает за разрешение имени свойства / переменной в вашем Spring XML? Это делается во время компиляции через Maven или это должно произойти во время выполнения? Если во время выполнения вы используете Spring's PropertyPlaceholderConfigurer?

...