[英]Spring web app. One war multiple application context
我搜索了一段时间但无法找到解决问题的正确方法。
我有一个WAR Web应用程序,我想在其中运行2个Spring应用程序,一个用于Web部件,一个运行计划任务。 两个应用程序共享很多bean,所以我希望这两个应用程序共享一些bean实例。
我想把我的背景分开:
-shared-的context.xml
-Web-的context.xml
-task-的context.xml
必须隔离Web上下文和任务上下文,而不是彼此看到。 他们需要创建一些相同但具有不同配置的bean。
这可能吗? 我该怎么办呢?
我首先尝试在Web上下文和任务上下文中放入<import resource="classpath:shared-context.xml" />
,并将我的web.xml配置为
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>web-context.xml task-context.xml</param-value>
</context-param>
但问题是网络和任务之间没有隔离。 它们都共享所有bean,甚至是web-context.xml和task-context.xml中定义的bean
有关信息,请访问我的web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/web-context.xml /WEB-INF/task-context.xml</param-value>
</context-param>
<!-- Listeners -->
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.gwtrpcspring.RemoteServiceDispatcher</servlet-class>
</servlet>
<servlet>
<servlet-name>contentDownloadServlet</servlet-name>
<servlet-class>ch.olator.servlet.MyContentDownloadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.rpc</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>contentDownloadServlet</servlet-name>
<url-pattern>/download</url-pattern>
</servlet-mapping>
... some irrelevant filters ...
</web-app>
更新
- 为了让事情更清楚,我需要在任务和Web之间进行隔离,因为任务上下文用于运行计划任务来定义Web上下文中的一些bean但不同。 例如,我有web-context中的作用域会话bean,但我需要为任务定义不同的任务,因为计划任务不能使用作用域会话bean。
你可以使用import标签
在web-context.xml中:
<import resource="classpath:shared-context.xml" /> <import resource="classpath:task-context.xml" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.