Мы находимся в процессе миграции двухуровневого приложения Swing в веб-приложение (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
}
}
т.е. в середине некоторой обработки начинается какое-то взаимодействие с пользователем. Очевидно, я не могу сделать это напрямую с помощью сервлета.
Одна вещь, которая могла бы справиться с этим довольно хорошо, - это продолжения. Поэтому я проверил, могу ли я их использовать, и был удивлен, что на самом деле существуют библиотеки, которые позволяют делать такие вещи: Продолжение в Java
При проверке библиотек, упомянутых в этом вопросе, и ответов на него я наткнулся на это утверждение
После завершения спецификации продолжения будут заменены стандартными приостанавливаемыми запросами Servlet-3.0. Доступны ранние выпуски Jetty-7, которые реализуют предлагаемый стандартный API приостановки / возобновления.
Но я не смог найти пример того, как делать что-то подобное с помощью Servlet 3.0 API.
Итак, вопросы:
Можно ли сделать это с помощью API Servlet-3.0 без полного рефакторинга кода, описанного выше, в два или более отдельных действия
Если да, то как? Есть ли какие-то полные примеры для этого или аналогичного варианта использования?
Что мне следует использовать: Continuations или Servlet API? Или, если на это нельзя ответить прямо, от каких условий зависит это решение?