org.eclipse.jetty.continuation
类 Servlet3Continuation

java.lang.Object
  继承者 org.eclipse.jetty.continuation.Servlet3Continuation
所有已实现的接口:
Continuation

public class Servlet3Continuation
extends Object
implements Continuation

This implementation of Continuation is used by ContinuationSupport when it detects that the application has been deployed in a non-jetty Servlet 3 server.


字段摘要
 
从接口 org.eclipse.jetty.continuation.Continuation 继承的字段
ATTRIBUTE
 
构造方法摘要
Servlet3Continuation(ServletRequest request)
           
 
方法摘要
 void addContinuationListener(ContinuationListener listener)
          Add a ContinuationListener.
 void complete()
          Complete a suspended request.
 Object getAttribute(String name)
          Get a request attribute.
 ServletResponse getServletResponse()
          Get the suspended response.
 boolean isExpired()
           
 boolean isInitial()
           
 boolean isResponseWrapped()
          Is the suspended response wrapped.
 boolean isResumed()
           
 boolean isSuspended()
           
 void keepWrappers()
           
 void removeAttribute(String name)
          Remove a request attribute.
 void resume()
          Resume a suspended request.
 void setAttribute(String name, Object attribute)
          Set a request attribute.
 void setTimeout(long timeoutMs)
          Set the continuation timeout.
 void suspend()
          Suspend the processing of the request and associated ServletResponse.
 void suspend(ServletResponse response)
          Suspend the processing of the request and associated ServletResponse.
 void undispatch()
          Undispatch the request.
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

Servlet3Continuation

public Servlet3Continuation(ServletRequest request)
方法详细信息

addContinuationListener

public void addContinuationListener(ContinuationListener listener)
从接口 Continuation 复制的描述
Add a ContinuationListener.

指定者:
接口 Continuation 中的 addContinuationListener

complete

public void complete()
从接口 Continuation 复制的描述
Complete a suspended request.

This method can be called by any thread that has been passed a reference to a suspended request. When a request is completed, the associated response object committed and flushed. The request is not redispatched.

If complete is called before a suspended request is returned to the container (ie the thread that called Continuation.suspend() is still within the filter chain and/or servlet service method), then the complete does not take effect until the call to the filter chain and/or servlet returns to the container. In this case both Continuation.isSuspended() and Continuation.isResumed() return true.

Typically resume() is used after a call to Continuation.suspend(ServletResponse) with a possibly wrapped response. The async handler should use the response provided by Continuation.getServletResponse() to write the response before calling Continuation.complete(). If the request was suspended with a call to Continuation.suspend() then no response object will be available via Continuation.getServletResponse().

Once complete has been called and any thread calling the filter chain and/or servlet chain has returned to the container, the request lifecycle is complete. The container is able to recycle request objects, so it is not valid hold a request or continuation reference after the end of the life cycle.

指定者:
接口 Continuation 中的 complete
另请参见:
Continuation.suspend()

getServletResponse

public ServletResponse getServletResponse()
从接口 Continuation 复制的描述
Get the suspended response.

指定者:
接口 Continuation 中的 getServletResponse
返回:
the ServletResponse passed to Continuation.suspend(ServletResponse).

isExpired

public boolean isExpired()
指定者:
接口 Continuation 中的 isExpired
返回:
true after a request has been redispatched as the result of a timeout. Returns false after any subsequent call to suspend.

isInitial

public boolean isInitial()
指定者:
接口 Continuation 中的 isInitial
返回:
true while the request is within the initial dispatch to the filter chain and/or servlet. Will return false once the calling thread has returned to the container after suspend has been called and during any subsequent redispatch.

isResumed

public boolean isResumed()
指定者:
接口 Continuation 中的 isResumed
返回:
true if the request has been redispatched by a call to Continuation.resume(). Returns false after any subsequent call to suspend

isSuspended

public boolean isSuspended()
指定者:
接口 Continuation 中的 isSuspended
返回:
true after Continuation.suspend() has been called and before the request has been redispatched due to being resumed, completed or timed out.

keepWrappers

public void keepWrappers()

resume

public void resume()
从接口 Continuation 复制的描述
Resume a suspended request.

This method can be called by any thread that has been passed a reference to a continuation. When called the request is redispatched to the normal filter chain and servlet processing with Continuation.isInitial() false.

If resume is called before a suspended request is returned to the container (ie the thread that called Continuation.suspend() is still within the filter chain and/or servlet service method), then the resume does not take effect until the call to the filter chain and/or servlet returns to the container. In this case both Continuation.isSuspended() and Continuation.isResumed() return true. Multiple calls to resume are ignored.

Typically resume() is used after a call to Continuation.suspend() with no arguments. The dispatch after a resume call will use the original request and response objects, even if Continuation.suspend(ServletResponse) had been passed a wrapped response.

指定者:
接口 Continuation 中的 resume
另请参见:
Continuation.suspend()

setTimeout

public void setTimeout(long timeoutMs)
从接口 Continuation 复制的描述
Set the continuation timeout.

指定者:
接口 Continuation 中的 setTimeout
参数:
timeoutMs - The time in milliseconds to wait before expiring this continuation after a call to Continuation.suspend() or Continuation.suspend(ServletResponse). A timeout of <=0 means the continuation will never expire.

suspend

public void suspend(ServletResponse response)
从接口 Continuation 复制的描述
Suspend the processing of the request and associated ServletResponse.

After this method has been called, the lifecycle of the request will be extended beyond the return to the container from the Servlet.service(ServletRequest, ServletResponse) method and Filter.doFilter(ServletRequest, ServletResponse, FilterChain) calls. When a suspended request is returned to the container after a dispatch, then the container will not commit the associated response (unless an exception other than ContinuationThrowable is thrown).

When the thread calling the filter chain and/or servlet has returned to the container with a suspended request, the thread is freed for other tasks and the request is held until either:

Typically suspend with a response argument is uses when a call to Continuation.complete() is expected. If a call to Continuation.resume() is expected, then the Continuation.suspend() method should be used instead of this method.

Filters that may wrap the response object should check Continuation.isResponseWrapped() to decide if they should destroy/finish the wrapper. If Continuation.isResponseWrapped() returns true, then the wrapped request has been passed to the asynchronous handler and the wrapper should not be destroyed/finished until after a call to Continuation.complete() (potentially using a ContinuationListener.onComplete(Continuation) listener).

指定者:
接口 Continuation 中的 suspend
参数:
response - The response to return via a call to Continuation.getServletResponse()

suspend

public void suspend()
从接口 Continuation 复制的描述
Suspend the processing of the request and associated ServletResponse.

After this method has been called, the lifecycle of the request will be extended beyond the return to the container from the Servlet.service(ServletRequest, ServletResponse) method and Filter.doFilter(ServletRequest, ServletResponse, FilterChain) calls. When a suspended request is returned to the container after a dispatch, then the container will not commit the associated response (unless an exception other than ContinuationThrowable is thrown).

When the thread calling the filter chain and/or servlet has returned to the container with a suspended request, the thread is freed for other tasks and the request is held until either:

Typically suspend with no arguments is uses when a call to Continuation.resume() is expected. If a call to Continuation.complete() is expected, then the Continuation.suspend(ServletResponse) method should be used instead of this method.

指定者:
接口 Continuation 中的 suspend

isResponseWrapped

public boolean isResponseWrapped()
从接口 Continuation 复制的描述
Is the suspended response wrapped.

Filters that wrap the response object should check this method to determine if they should destroy/finish the wrapped response. If the request was suspended with a call to Continuation.suspend(ServletResponse) that passed the wrapped response, then the filter should register a ContinuationListener to destroy/finish the wrapped response during a call to ContinuationListener.onComplete(Continuation).

指定者:
接口 Continuation 中的 isResponseWrapped
返回:
True if Continuation.suspend(ServletResponse) has been passed a ServletResponseWrapper instance.

getAttribute

public Object getAttribute(String name)
从接口 Continuation 复制的描述
Get a request attribute. This method is a convenience method to call the ServletRequest.getAttribute(String) method on the associated request object. This is a thread safe call and may be called by any thread.

指定者:
接口 Continuation 中的 getAttribute
参数:
name - the attribute name
返回:
the attribute value
另请参见:
Continuation.getAttribute(java.lang.String)

removeAttribute

public void removeAttribute(String name)
从接口 Continuation 复制的描述
Remove a request attribute. This method is a convenience method to call the ServletRequest.removeAttribute(String) method on the associated request object. This is a thread safe call and may be called by any thread.

指定者:
接口 Continuation 中的 removeAttribute
参数:
name - the attribute name
另请参见:
Continuation.removeAttribute(java.lang.String)

setAttribute

public void setAttribute(String name,
                         Object attribute)
从接口 Continuation 复制的描述
Set a request attribute. This method is a convenience method to call the ServletRequest.setAttribute(String, Object) method on the associated request object. This is a thread safe call and may be called by any thread.

指定者:
接口 Continuation 中的 setAttribute
参数:
name - the attribute name
attribute - the attribute value
另请参见:
Continuation.setAttribute(java.lang.String, java.lang.Object)

undispatch

public void undispatch()
从接口 Continuation 复制的描述
Undispatch the request.

This method can be called on a suspended continuation in order to exit the dispatch to the filter/servlet by throwing a ContinuationThrowable which is caught either by the container or the ContinuationFilter. This is an alternative to simply returning from the dispatch in the case where filters in the filter chain may not be prepared to handle a suspended request.

This method should only be used as a last resort and a normal return is a prefereable solution if filters can be updated to handle that case.

指定者:
接口 Continuation 中的 undispatch
另请参见:
Continuation.undispatch()


Copyright © 2013. All Rights Reserved.