【问题标题】:Asynchronous Requests not working with Tomcat 7 / Terracotta 3.6异步请求不适用于 Tomcat 7 / Terracotta 3.6
【发布时间】:2013-07-03 00:50:12
【问题描述】:

我正在开发一个包含使用 DeferredResponse 对象的异步调用的 Tomcat 7 Web 应用程序。

在我们将 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 以支持异步请求?

【问题讨论】:

    标签: java tomcat7 terracotta


    【解决方案1】:

    我有一个类似的问题。尝试在标签 Valve 中添加参数 asyncSupported="true"。就我而言,它已经奏效了。

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

    【讨论】:

    • 我试过没用,你用的是哪个版本的兵马俑?
    【解决方案2】:

    如果你使用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" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      相关资源
      最近更新 更多