【问题标题】:Are asynchronous servlets possible in Java 1.5?Java 1.5 中是否可以使用异步 servlet?
【发布时间】:2015-07-15 13:34:16
【问题描述】:

我有一个 servlet,它对网络共享执行大量文件 IO,因此运行时间很长。我想在前端实现一个进度条,而不是一个简单的微调器 gif,以便用户知道某些事情正在实际发生,而不仅仅是“卡住”。

我在 Websphere 6.1 上运行 Java 1.5,并且看不到升级。我知道在 Servlet 3.0 规范中,异步 servlet 支持是内置的,但我想知道是否有一种解决方法或类似的方法可以将其伪装成异步的?

我使用 jQuery 进行了一个简单的 ajax 调用:

$.ajax({
    url: "/servlet.action",
    success: function(json, status, xhr) {
        alert("success");
    }
});

servlet 是否可以在其通过进程时定期将状态更新发送回客户端,或者客户端是否应该定期向 servlet(或其他有权访问主 servlet 状态的 servlet)发出状态请求?

我目前无法升级 Java 和/或 Websphere 的版本。

【问题讨论】:

  • 我认为你的问题是 websphere 版本。请参阅here“WebSphere Web 服务器插件版本 8.5.5.3 及更高版本支持全双工通信”
  • 你最好使用 WebSocket 来解决这个问题

标签: java ajax servlets asynchronous java-5


【解决方案1】:

我找到了解决方法:

  1. 发送异步请求以启动进程。这个 servlet 用处理的状态更新一个静态对象。 (就像某种会话/请求标识符的 Map → 进程状态)
  2. 定期将另一个异步请求发送到可以访问该静态对象的不同 servlet 并返回当前状态。状态可以是数字(完成百分比)、字符串(状态消息)或包含一堆信息的对象。
  3. 然后周期性请求可以处理状态并更新进度条之类的。

这可以在具有任何 Java 版本的任何类型的 servlet 容器中完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2011-11-06
    • 2016-03-04
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多