Я искал какое-то время, но не смог найти правильное решение моей проблемы.Весенние веб-приложения. Один конфликт с несколькими приложениями
У меня есть одно веб-приложение WAR, и я хочу, чтобы в нем работало 2 приложения весны, одно для веб-части, одна из которых выполняла запланированную задачу. В обоих приложениях есть много бобов, поэтому я хотел бы, чтобы эти два приложения совместно использовали экземпляр beans.
Я хотел бы разделить свои контексты:
-shared-context.xml
-web-context.xml
-task-context.xml
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>
, но проблема в том, что не существует никакой изоляции между полотном и задачи. Они все разделяют все бобы даже один определенный веб-context.xml и задачи-context.xml
Для получения информации вот мой файл 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.xml? Кроме того, у вас все еще есть одно приложение, сколько xml-файлов или контекстов не имеет значения. Вообще говоря, у вас уже должно быть 2 контекста: один из 'ContextLoaderListener' и другой из' DispatcherServlet'. Один из «ContextLoaderListener» функционирует как родительский для объекта «DispathcerServlet». В вашем опубликованном web.xml у вас есть только один контекст: один из 'ContextLoaderListener', сколько xml-файлов у вас не имеет значения. –
Недостающая часть - это какой-то нерелевантный фильтр сервлетов. У меня нет другого файла контекста, который я использовал, чтобы поместить все в один и тот же web-context.xml (возможно, это не так) Хотя я хочу, чтобы оба диспетчерского сервлета и contentDownloadServlet делили все компоненты. Я не хочу иметь изолированный и другой контекст между диспетчерским сервлетом и contentDownloadServlet –
Хорошо. Но у вас есть только один контекст, независимо от того, сколько xml-файлов у вас есть. Итак, что вы хотите, должно быть уже так ... Ваш файл не загружается дважды, он может быть проанализирован дважды, но это что-то другое. Бобы одинаковы. –