Асинхронные запросы не работают с Tomcat 7/Terracotta 3.6

Я работаю над веб-приложением Tomcat 7, которое включает асинхронный вызов с использованием объекта DeferredResponse.

Все было хорошо, пока мы не представили Terracotta для совместного использования сеансов в нашем кластере. Теперь я получаю это в наших журналах Catalina:

java.lang.IllegalStateException: Async support must be enabled on a servlet and
for all filters involved in async request processing. This is done in Java code
using the Servlet API or by adding "<async-supported>true</async-supported>" to
servlet and filter declarations in web.xml.

Мы использовали этот тег во всей нашей конфигурации, и он выполнял свою работу до тех пор, пока клапан TerracottaTomcat70xSessionValve не был введен в конфигурацию Tomcat context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Valve className="org.terracotta.session.TerracottaTomcat70xSessionValve" tcConfigUrl="[config-url]" />
</Context>

Я ищу, как настроить Terracotta Session Valve для поддержки асинхронных запросов?


person QueyJoh    schedule 03.07.2013    source источник


Ответы (2)


У меня была проблема с силимаром. Попробуйте добавить параметр asyncSupported="true" в тег Valve. В моем случае это сработало.

<Context>
<Valve className="org.terracotta.session.TerracottaTomcat70xSessionValve" asyncSupported="true" tcConfigUrl="[config-url]" />

person Greca    schedule 03.10.2013
comment
Я пробовал это безрезультатно, какую версию Terracotta вы используете? - person QueyJoh; 04.10.2013

Если вы используете tomcat-redis-session-manager-1.2-tomcat-7-1.2.jar, измените conf для поддержки async.

пример:

<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" asyncSupported="true" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
         host="localhost" 
         port="6379" 
         database="0" 
         maxInactiveInterval="60" />
person Chen    schedule 28.05.2015