diff --git a/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/Continuation.java b/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/Continuation.java index f4043ef23b4..b1ff48aef47 100644 --- a/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/Continuation.java +++ b/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/Continuation.java @@ -203,5 +203,23 @@ public interface Continuation * @param listener */ void addContinuationListener(ContinuationListener listener); + + + /* ------------------------------------------------------------ */ + /** Get the associated servlet request. + *
+ * Not all request methods are valid to be called outside of the
+ * scope of a filter/servlet. Specifically servletPath methods will
+ * not return correct values. The request attribute methods are suitable
+ * to be called from an asynchronous scope.
+ * @return The associated servlet request
+ */
+ ServletRequest getServletRequest();
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return The associated servlet response.
+ */
+ ServletResponse getServletResponse();
}
diff --git a/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/ContinuationFilter.java b/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/ContinuationFilter.java
index a8d7a85e366..5797c178d65 100644
--- a/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/ContinuationFilter.java
+++ b/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/ContinuationFilter.java
@@ -26,7 +26,7 @@ public class ContinuationFilter implements Filter
{
if (_faux)
{
- final FauxContinuation fc = new FauxContinuation();
+ final FauxContinuation fc = new FauxContinuation(request,response);
request.setAttribute(Continuation.ATTRIBUTE,fc);
boolean complete=false;
@@ -69,17 +69,24 @@ public class ContinuationFilter implements Filter
private static final int __SUSPENDED=5; // Suspended and parked
private static final int __UNSUSPENDING=6;
private static final int __COMPLETE=7;
+
+ private final ServletRequest _request;
+ private final ServletResponse _response;
private int _state=__HANDLING;
private boolean _initial=true;
private boolean _resumed=false;
private boolean _timeout=false;
private boolean _keepWrappers=false;
-
private long _timeoutMs=30000; // TODO configure
private ArrayList