У меня есть веб-приложение, основанное на Spring 3.0.3, которое я разрабатывал с использованием Eclipse 3.4.При этом я запускал веб-приложение в Tomcat 6.0.18 из Eclipse.То есть у меня Eclipse использует установку Tomcat, что означает, что Tomcat будет при необходимости изменять файлы и т. Д. (По крайней мере, это мое понимание того, что он делает).
Моя проблема заключается в указании значений для contextConfigLocationsв web.xml.При запуске из Eclipse это работало нормально:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
classpath:applicationContext-security.xml
</param-value>
</context-param>
Однако, когда я упаковываю приложение в файл war (ROOT.war), а затем добавляю его в каталог веб-приложения Tomcat и пытаюсь запустить Tomcat, яполучить ошибку, что ни один из этих файлов applicationContext не может быть найден.Но когда я изменяю его ниже, Tomcat может найти файлы:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/applicationContext.xml
/WEB-INF/config/applicationContext-security.xml
</param-value>
</context-param>
. Следует отметить, что applicationContext.xml включает в себя другие файлы applicationContext, которые также используют короткий путь classpath:.При работе в Tomcat мне нужно полностью отказаться от использования classpath: в пользу относительных путей, чтобы Tomcat мог видеть эти файлы.
Отлично.Tomcat и Eclise прекрасно ладят друг с другом.Но JUnit 4.7 больше не радует.По какой-либо причине файлы, указанные с помощью @ContextConfiguration в тестовом классе, не могут быть найдены, если не используется сокращение classpath:.Вот пример:
@ContextConfiguration(locations = {"classpath:applicationContext.xml", "classpath:applicationContext-security.xml"})
public class UserDaoTest extends AbstractTransactionalJUnit4SpringContextTests {
@Test
public void testCreateUser() {
}
Итак, applicationContext.xml и applicationContext-security.xml найдены без проблем;однако файлы свойств, указанные в applicationContext.xml, не найдены.
<bean id="appProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="singleton" value="true" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>/WEB-INF/config/spring/base.spring-config.properties</value>
<value>/WEB-INF/config/spring/local.spring-config.properties</value>
</list>
</property>
</bean>
Но если я укажу расположение этих файлов с помощью короткого пути classpath: файлы свойств будут найдены.Однако если я сделаю это, файлы не будут найдены при запуске из файла war в Tomcat.
На данный момент я создал файл applicationContext-test.xml, который представляет собой конгломерат вырезания и вставкивсе остальные файлы applicationContext, в которых я использую короткий путь classpath:Это кажется хакерским и подверженным ошибкам, и мне интересно, что проблема может быть во всех этих технологий.
Обратная связь приветствуется!