异步请求不与Tomcat 7 / Terracotta 3.6一起使用

时间:2013-07-03 00:50:12

标签: java tomcat7 terracotta

我正在使用Tomcat 7 Web应用程序,该应用程序包含使用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会话阀以支持异步请求?

2 个答案:

答案 0 :(得分:1)

我有一个silimar问题。尝试在标记Valve中添加参数asyncSupported =“true”。就我而言,它起作用了。

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

答案 1 :(得分:0)

如果使用tomcat-redis-session-manager-1.2-tomcat-7-1.2.jar 请修改conf支持异步。

示例:

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