我正在创建类似于https://github.com/rstoyanchev/spring-mvc-chat/的东西我使用 DeferredResult 进行异步处理。我收到错误
HTTP Status 500 - Request processing failed; nested exception is 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 "true" to servlet and filter declarations in web.xml.
我选择采用 java 方式,因为我无法编辑 web.xml 文件。所以我的 root-context.xml 文件中有一个 bean:
<bean id="asyncSupport" class="packagename.AsyncSupport"></bean>
这是我的 AsyncSupport 类
pblic class AsyncSupport implements AsyncConfigurer {
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(20);
executor.setMaxPoolSize(100);
executor.setQueueCapacity(200);
executor.initialize();
return executor;
}
}
它似乎不起作用。还是同样的问题。我做得正确吗?我该如何解决这个问题?
最佳答案
在 servlet 配置的 web.xml 中,您必须将支持异步设置为 true
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/webmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
关于java - Java 中的异步支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31169090/