tomcat中使用异步servlet要点

本人使用tomcat7.0.64 ,jdk1.8完成配置。


1.tomcat版本

   要使用支持servlet3.0标准的tomcat,这是异步请求的基本要求

2.配置应用程序,在servlet和filter中都配置<async-supported>true</async-supported>标记,类似如下:

<servlet>
		<description>spring mvc servlet</description>
		<servlet-name>spring_mvc_dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath*:META-INF/spring/spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
		<async-supported>true</async-supported>
	</servlet>

<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<async-supported>true</async-supported>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>

如果使用ShiroFilter,那么还要加入:<dispatcher>ASYNC</dispatcher>

<filter-mapping>
		<filter-name>shiroFilter</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>ASYNC</dispatcher>
	</filter-mapping>

以上是springmvc使用的基本配置,如果是普通servlet,配置是一样的。只要异步用到的servlet,filter都需要增加<async-supported>true</async-supported>配置。应用的配置都一样,没什么特殊的。

  3.其他配置

    如果以上两步都做完了,还有Async support must be enabled on a servlet and for all filters的这种错误,意思大致还是没有配置。就要找其他原因了。

   例如,我遇到过一个问题,uat环境的程序报Async support must be enabled on a servlet and for all filters。。。错误,但是jdk,tomcat版本和测试都完全一样。测试环境可以通过,但uat不行。最后借助google才解决了问题。说句题外话,百度,bing都解决不了这个,呵呵。

   最后查找到uat环境的tocmat使用了redis进行session共享,在tomcat/conf/context.xml中有这样一句配置:

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
没有配置异步支持,Value中加上asyncSupported="true"属性,就可以解决了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值