Мы находимся в процессе миграции двухуровневого приложения 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? Или, если на этот вопрос нельзя ответить напрямую, от каких условий зависит это решение?