Spring:在不同的servlet之间共享应用程序上下文

时间:2017-03-24 17:40:56

标签: spring soap

我在同一个项目中有一个Web应用程序和SOAP Web服务。我已经定义了两个servlet xml

MVC-servlet.xml中

<import resource="ws-applicationContext.xml"/>

皂servlet.xml中

<import resource="soap-applicationContext.xml"/>

将这些applicationContext导入一个公共文件

soap-applicationContext.xml的内容

<import resource="my-common-applicationContext.xml"/>

<context:annotation-config/>
<context:component-scan base-package="com.xyz.myproject1"/>

ws-applicationContext.xml的内容

<import resource="my-common-applicationContext.xml"/>

<context:annotation-config/>
<context:component-scan base-package="com.xyz.myproject2"/>

my-common-applicationContext.xml包含集成,数据等所需的公共包。

在应用程序启动时,由于my-common-applicationContext.xml包含在应用程序上下文中,因此会加载两次。这导致DataConfigurations被加载两次。

解决此问题的最佳方法是什么,同时确保上下文都可以访问相关的bean?

1 个答案:

答案 0 :(得分:0)

找出正确的方法。 所有常见文件都有共同点,但加载了ContextLoaderListener。这确保了所有课程都可用。

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


<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:my-common-applicationContext.xml
    </param-value>
</context-param>