我正在使用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会话阀以支持异步请求?
答案 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" />