2014-12-15 2 views
4

Я искал какое-то время, но не смог найти правильное решение моей проблемы.Весенние веб-приложения. Один конфликт с несколькими приложениями

У меня есть одно веб-приложение 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> 

ОБНОВЛЕНО
Чтобы сделать все более ясным, мне нужна эта изоляция между задачей и сетью, потому что контекст задачи, который используется для запуска запланированной задачи для определения некоторых компонентов, которые находятся в веб-контексте, но по-разному. Например. У меня есть босики с привязкой к сеансу, которые находятся в веб-контексте, но мне нужно определить их по-разному для задач, поскольку запланированная задача не может использовать босики с расширенными сессиями.

+0

Что та часть, которая отсутствует у вас web.xml? Кроме того, у вас все еще есть одно приложение, сколько xml-файлов или контекстов не имеет значения. Вообще говоря, у вас уже должно быть 2 контекста: один из 'ContextLoaderListener' и другой из' DispatcherServlet'. Один из «ContextLoaderListener» функционирует как родительский для объекта «DispathcerServlet». В вашем опубликованном web.xml у вас есть только один контекст: один из 'ContextLoaderListener', сколько xml-файлов у вас не имеет значения. –

+0

Недостающая часть - это какой-то нерелевантный фильтр сервлетов. У меня нет другого файла контекста, который я использовал, чтобы поместить все в один и тот же web-context.xml (возможно, это не так) Хотя я хочу, чтобы оба диспетчерского сервлета и contentDownloadServlet делили все компоненты. Я не хочу иметь изолированный и другой контекст между диспетчерским сервлетом и contentDownloadServlet –

+0

Хорошо. Но у вас есть только один контекст, независимо от того, сколько xml-файлов у вас есть. Итак, что вы хотите, должно быть уже так ... Ваш файл не загружается дважды, он может быть проанализирован дважды, но это что-то другое. Бобы одинаковы. –

ответ

0

вы можете использовать импорт тег

в веб-context.xml:

<import resource="classpath:shared-context.xml" /> 
<import resource="classpath:task-context.xml" /> 
+0

Нет, я хочу, чтобы этот веб-сайт и задача были отделены от приложения. Я не хочу, чтобы веб-контекст видел beans, которые определены в контексте задачи, ни контекст задачи, чтобы видеть beans, определенные в веб-контексте –

 Смежные вопросы

  • Нет связанных вопросов^_^