我们正在将 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 来做到这一点。
可以很好地处理这个问题的一件事是延续。所以我检查了我是否可以使用这些,并惊讶于实际上有支持这种东西的库:Java 中的延续
在检查该问题中提到的库及其答案时,我遇到了这个声明
一旦规范最终确定,延续将被标准 Servlet-3.0 可暂停请求所取代。Jetty-7 的早期版本现已推出,可实现建议的标准挂起/恢复 API
但我找不到如何使用 Servlet 3.0 API 执行上述操作的示例
所以问题是:
是否可以使用 Servlet-3.0 API 完成上述操作,而无需将上面的代码完全重构为两个或多个单独的操作
如果上面的答案是肯定的:如何?是否有针对此或类似用例的完整示例?
我应该使用 Continuations 还是 Servlet API?或者如果不能直接回答这个决定取决于什么条件?