java - Java 中的异步支持

标签 java spring asynchronous

我正在创建类似于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/

相关文章:

JAVA如何使用方法打印出main中的数组?

java - Hybris 关系型 FlexSearch 选择

java - 如何立即终止线程? (不打扰)

java - 鉴于参数名称在编译过程中丢失,Spring如何通过参数名称 Autowiring ?

java - hibernateentityManagerFactory init 抛出 ExceptionInInitializerError java.lang.ClassCastException

node.js redis同步解决方案

java - Google Drive SDK - 如何获取文件所在的文件夹?

java - 参数 redirectattributes 是模型或映射类型,但不能从实际模型分配

c# - 从同步方法调用异步方法

javascript - 如何等待一组异步回调函数?