gpt4 book ai didi

java - 在 Servlet 3.0 API 中继续或暂停和恢复以与客户端通信?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:34:36 26 4
gpt4 key购买 nike

我们正在将 Swing 两层应用程序迁移到 Web 应用程序(tomcat、Spring MVC、extJS,如果有任何不同的话)。

我们在应用程序中发现了这样的代码(简化的 Javaesc 伪代码)。

class DoSomethingComplicatedAction extends Action{
public performAction(..){
// do lots of stuff here
// decend about 40 steps in the call stack
answer = JOptionPane.showConfirmDialog()
if (answer == something){
// do something convoluted here
} else {
// do something even more convoluted here
}
}

即在一些处理过程中,开始与用户进行一些交互。显然我不能直接用 servlet 来做到这一点。

可以很好地处理这个问题的一件事是延续。所以我检查了我是否可以使用它们并且惊讶地发现实际上有库可以实现这种东西:Continuations in Java

在检查该问题中提到的库及其答案时,我遇到了 this statement

Continuations will be replaced by standard Servlet-3.0 suspendable requests once the specification is finalized. Early releases of Jetty-7 are now available that implement the proposed standard suspend/resume API

但我找不到如何使用 Servlet 3.0 API 执行上述操作的示例

所以问题是:

  1. 是否可以使用 Servlet-3.0 API 完成以上操作而无需完全将上面勾画的代码重构为两个或多个独立的代码 Action

  2. 如果以上问题的答案是肯定的:如何?是否有针对此用例或类似用例的完整示例?

  3. 我应该使用 Continuations 还是 Servlet API?或者,如果不能直接回答这个问题,那么这个决定取决于什么条件?

最佳答案

jetty 提出的 continuation api 是克服当时 servlet api 局限性的主要解决方法。 (一个请求,一个线程)

现在,您应该几乎只使用 Servlet 3.0。

请注意,在您的情况下,您甚至可能不需要做任何特殊的事情,因为 Actions 是重新激活的,您可以采用通常的 ajax 方式。

我正在添加一些相关链接:

  1. Ajax, Reverse Ajax
  2. Async vs sync servlets
  3. Jetty 8.0 and continuations

关于java - 在 Servlet 3.0 API 中继续或暂停和恢复以与客户端通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9484385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com