- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 Spring 的 OncePerRequestFilter
覆盖 shouldNotFilterAsyncDispatch
方法以返回 false。这样它就可以处理异步请求。在过滤器中,我正在尝试执行以下操作:
if (isAsyncDispatch(request)) {
request.getAsyncContext().addListener(new AsyncListener() {
@Override
public void onComplete(AsyncEvent event) throws IOException {
System.out.println("onComplete");
}
@Override
public void onTimeout(AsyncEvent event) throws IOException {
}
@Override
public void onError(AsyncEvent event) throws IOException {
System.out.println("onError");
}
@Override
public void onStartAsync(AsyncEvent event) throws IOException {
}
});
}
因此 isAsyncDispatch
按预期返回 true。但是,当我尝试 getAsyncContext
时,它会失败并出现以下异常:
IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)
确实,request.isAsyncStarted()
返回 false,但是 request.isAsyncSupported()
为 true 而 request.getDispatcherType()
为 异步
。
我不明白:它是异步的还是不异步的?也许我以错误的方式使用了 API?如何添加 AsyncListener
?可能是因为我使用的是 Tomcat?
提前致谢!
最佳答案
当我过去这样做时,我们已经完成了:
if (request.isAsyncSupported()) {
AsyncContext asyncContext = request.startAsync();
// Do whatever with context
}
getAsyncContext()
的 javadoc 声明:(在 ServletRequest 中)
IllegalStateException - if this request has not been put into asynchronous mode, i.e., if neither startAsync() nor startAsync(ServletRequest,ServletResponse) has been called
关于java - 从 HttpServletRequest 获取 AsyncContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45957127/
我有点困惑 servlet 容器如何在应用程序取消部署阶段或只是超时终止 AsyncContext。例如应用程序开发人员有以下代码片段: @WebServlet(name = "MyServlet",
我们有一个带有仪表板的 Web 应用程序,它不断地轮询更新。在服务器端,更新请求是异步的,因此我们可以通过监听器/通知系统在发生更新时做出响应。 我们看到的问题是,当其中一个轮询请求得到响应时,在某些
关于:AsyncContextThread https://github.com/StephenCleary/AsyncEx/wiki/AsyncContext https://github.com/
首先我想说英语不是我的母语,所以如果我犯了一些明显的错误或者有些地方不够清晰,请原谅。问题: 最近我被转移到一个新项目,我们正在开发一个 Java EE 应用程序,该应用程序通过 Jersey+Hib
虽然 Servlet 3.0 规范有 request.startAsync() 和 asyncContext.start(),为什么它没有提供 asyncContext.stop() 或 asyncC
我正在使用 Spring 的 OncePerRequestFilter 覆盖 shouldNotFilterAsyncDispatch 方法以返回 false。这样它就可以处理异步请求。在过滤器中,我
我目前正在学习网站编程,准确地说是使用 javascript 的 java servlet,我刚刚学习了如何在单个 servlet 中使用 AsyncContext。例如,我想知道是否可以在 serv
我关注了this教程并实现了一个简单的聊天应用程序。我正在最新的 Mozilla Firefox 和 Google Chrome 浏览器中对其进行测试。 我主要担心的是消息交换似乎不是实时发生的。即使
我在我的控制台应用程序中调用一个异步方法。我不希望应用程序在启动后不久退出,即在等待任务完成之前退出。看来我可以这样做: internal static void Main(string[] args
我几乎可以肯定,但最好澄清一下:如果 Runnable 在 servlet 请求的 AsyncContext 中启动,那么代码是在run方法线程安全吗?我想是的。因为每个线程都有一个新的 Runnab
我正在使用 Servlet 3.0 的 javax.servlet.AsyncContext 实现服务器发送的事件界面。 但是我不明白我应该如何处理 I/O 错误,例如 peer disconnect
我创建了一个 servlet 3.0 来探索异步请求处理: @WebServlet(name="MyTest", urlPatterns={"/MyTest"}, asyncSupported=tru
AsyncContext 的文档有这个同步工作的例子(只是稍微修改,但仍然有效): #include "napi.h" void MakeCallbackWithAsyncContext(const
当我们使用 servlet3 规范中提到的 AsyncContext 时,http 连接保持打开状态多长时间?我的一段代码是 final AsyncContext asyncContext = htt
我需要 Web/JavaEE 容器中的一个线程来从外部源获取信息并在同一 JVM 中完成相应的 AsyncContext 对象。 我希望有一个零延迟的解决方案,因此排除了定期轮询或计时器。 我可以启动
我点击了链接 http://wiki.eclipse.org/Jetty/Tutorial/Jetty_HelloWorld教程(使用 Eclipse)。并查看了现有的 stackoverflow h
我正在使用 intellij idea 终极版 12..4 Grails 2.2.0 , buildConfig.groovy 文件中的 grails.servlet.version = "2.5"
我正在尝试遵循http://wiki.eclipse.org/Jetty/Tutorial/Jetty_HelloWorld教程(使用 Eclipse)。该项目编译良好。但是,当我访问本地主机服务器时
我已成功运行 Java servlet 应用程序测试,该应用程序在 Amazon AWS Elastic BeansTalk 提供的基本示例应用程序上运行。 Java-Gradle-Jetty 平台。
以此处回答的几个示例和问题为主导(主要是 http://www.javaworld.com/javaworld/jw-02-2009/jw-02-servlet3.html?page=3 ),我想让服
我是一名优秀的程序员,十分优秀!