2010-07-19 16 views
3

我正在使用Spring和GWT在多模块maven2项目中工作。假设我有两个子项目:服务和演示。 “服务”包含服务的实际实现,“演示”负责将其包装为GWT。WEB-INF外的Spring XML文件

我已成功加载了位于WEB-INF目录(与web.xml相同)中的Spring XML文件,但我遇到了应该从其他模块加载的XML文件的问题。

我的web.xml文件看起来是这样的:

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

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     classpath:/spring-presentation.xml, classpath:/spring-services.xml 
    </param-value> 
</context-param> 

这里spring-presentation.xml是在演示项目和spring-services.xml是在服务项目。 spring-services.xml文件未加载。我错过了什么吗?

回答

2

我猜测演示文稿项目编译为WAR,服务项目编译为JAR。此外,演示项目依赖于服务项目。

在这种情况下,包括spring-services.xml文件作为服务项目的POM的资源,以使其在罐子,因为演示项目对服务项目的依赖,服务罐子将被放入/WEB-INF/lib文件夹然后Spring将能够从类路径中加载它。

+0

弹簧的services.xml提到它已经是服务项目中的src/main /资源目录,所以我想没有必要在项目的pom中明确声明它 – mgv 2010-07-19 18:44:18

1

如果数值classpath:启动时,它会不会看在WEB-INF/文件夹它将在类路径,这是WEB-INF/lib/下的所有jar文件的WEB-INF/classes和直接的内容。

,使它看起来在WEB-INF /文件夹,您需要指定这样的值:

<param-value> 
    /WEB-INF/spring-presentation.xml 
    /WEB-INF/spring-services.xml 
</param-value> 

(你可以把它们放在用逗号分隔的一个线,但我喜欢这样)

0

使用

<import resource="classpath:spring-services.xml" />

spring-presentation.xml顶部,而不是从web.xml中