Spec-Zone .ru
спецификации, руководства, описания, API
|
|
|||||||||
ПРЕДЫДУЩИЙ СЛЕДУЮЩИЙ КЛАСС КЛАССА | ФРЕЙМЫ НИКАКИЕ ФРЕЙМЫ | ||||||||
СВОДКА: ВЛОЖЕННЫЙ | ПОЛЕ | CONSTR | МЕТОД | ДЕТАЛЬ: ПОЛЕ | CONSTR | МЕТОД |
public interface AsyncContext
Класс, представляющий контекст выполнения для асинхронной работы, которая инициировалась на ServletRequest.
AsyncContext создается и инициализируется звонком ServletRequest#startAsync()
или ServletRequest#startAsync(ServletRequest, ServletResponse)
. Повторные вызовы этих методов возвратят тот же самый экземпляр AsyncContext, повторно инициализированный как соответствующий.
Когда асинхронная работа имеет синхронизированный, контейнер должен пробежать эти шаги:
onTimeout
метод, все AsyncListener
экземпляры, зарегистрированные в ServletRequest, на котором инициировалась асинхронная работа.complete()
или любой из dispatch()
методы, выполните ошибку, диспетчеризируют с кодом состояния, равным HttpServletResponse.SC_INTERNAL_SERVER_ERROR.complete()
или любой из dispatch()
методы, вызвать complete()
.
Полевая Сводка | |
---|---|
static java.lang.String |
ASYNC_CONTEXT_PATH
Имя запроса приписывает, под которым исходный путь контекста делается доступным для цели a dispatch(String) или dispatch(ServletContext,String) |
static java.lang.String |
ASYNC_PATH_INFO
Имя запроса приписывает, под которым исходная информация пути делается доступной для цели a dispatch(String) или dispatch(ServletContext,String) |
static java.lang.String |
ASYNC_QUERY_STRING
Имя запроса приписывает, под которым исходная строка запроса делается доступной для цели a dispatch(String) или dispatch(ServletContext,String) |
static java.lang.String |
ASYNC_REQUEST_URI
Имя запроса приписывает, под которым исходный URI запроса делается доступным для цели a dispatch(String) или dispatch(ServletContext,String) |
static java.lang.String |
ASYNC_SERVLET_PATH
Имя запроса приписывает, под которым исходный путь сервлета делается доступным для цели a dispatch(String) или dispatch(ServletContext,String) |
Сводка метода | ||
---|---|---|
void |
addListener(AsyncListener listener)
Регистрирует данный AsyncListener с новым асинхронным циклом, который был запущен звонком в один из ServletRequest#startAsync методы. |
|
void |
addListener(AsyncListener listener, ServletRequest servletRequest, ServletResponse servletResponse)
Регистрирует данный AsyncListener с новым асинхронным циклом, который был запущен звонком в один из ServletRequest#startAsync методы. |
|
void |
complete()
Завершает асинхронную работу, которая была запущена по запросу, который привык к initialze этот AsyncContext, закрывая ответ, который использовался, чтобы инициализировать этот AsyncContext. |
|
|
createListener(java.lang.Class<T> clazz)
Инстанцирует данного AsyncListener class. |
|
void |
dispatch()
Диспетчеризирует запрос и объекты ответа этого AsyncContext к контейнеру сервлета. |
|
void |
dispatch(ServletContext context, java.lang.String path)
Диспетчеризирует запрос и объекты ответа этого AsyncContext к данному path, определяющему контекст к данному context. |
|
void |
dispatch(java.lang.String path)
Диспетчеризирует запрос и объекты ответа этого AsyncContext к данному path. |
|
ServletRequest |
getRequest()
Получает запрос, который использовался, чтобы инициализировать этот AsyncContext, вызывая ServletRequest#startAsync() или ServletRequest#startAsync(ServletRequest, ServletResponse) . |
|
ServletResponse |
getResponse()
Получает ответ, который использовался, чтобы инициализировать этот AsyncContext, вызывая ServletRequest#startAsync() или ServletRequest#startAsync(ServletRequest, ServletResponse) . |
|
long |
getTimeout()
Получает тайм-аут (в миллисекундах) для этого AsyncContext. |
|
boolean |
hasOriginalRequestAndResponse()
Проверки, если этот AsyncContext был инициализирован с исходным или обернутым в приложение запросом и объектами ответа. |
|
void |
setTimeout(long timeout)
Устанавливает тайм-аут (в миллисекундах) для этого AsyncContext. |
|
void |
start(java.lang.Runnable run)
Заставляет контейнер диспетчеризировать поток, возможно от управляемого пула потоков, выполнять указанный Runnable. |
Полевая Деталь |
---|
static final java.lang.String ASYNC_REQUEST_URI
dispatch(String)
или dispatch(ServletContext,String)
static final java.lang.String ASYNC_CONTEXT_PATH
dispatch(String)
или dispatch(ServletContext,String)
static final java.lang.String ASYNC_PATH_INFO
dispatch(String)
или dispatch(ServletContext,String)
static final java.lang.String ASYNC_SERVLET_PATH
dispatch(String)
или dispatch(ServletContext,String)
static final java.lang.String ASYNC_QUERY_STRING
dispatch(String)
или dispatch(ServletContext,String)
Деталь метода |
---|
ServletRequest getRequest()
ServletRequest#startAsync()
или ServletRequest#startAsync(ServletRequest, ServletResponse)
.
ServletResponse getResponse()
ServletRequest#startAsync()
или ServletRequest#startAsync(ServletRequest, ServletResponse)
.
boolean hasOriginalRequestAndResponse()
Эта информация может использоваться фильтрами, вызванными в исходящем направлении, после того, как запрос был помещен в асинхронный режим, чтобы определить, должны ли любой запрос и/или обертки ответа, которые они добавили во время их входящего вызова, быть сохранены для продолжительности асинхронной работы, или могут быть выпущены.
ServletRequest#startAsync()
, или если это было инициализировано, вызывая ServletRequest#startAsync(ServletRequest, ServletResponse)
, и ни параметры ServletRequest ни ServletResponse, которые переносят любые обеспеченные приложением обертки; ложь иначеvoid dispatch()
Если асинхронный цикл был запущен с ServletRequest#startAsync(ServletRequest, ServletResponse)
, и запрос, который передают, является экземпляром HttpServletRequest, тогда диспетчеризирование к URI, возвращенному HttpServletRequest.getRequestURI()
. Иначе, диспетчеризирование к URI запроса, когда это было последнее диспетчеризированный контейнером.
Следующая последовательность иллюстрирует, как это будет работать:
// REQUEST dispatch to /url/A
AsyncContext ac = request.startAsync();
...
ac.dispatch(); // ASYNC dispatch to /url/A
// FORWARD dispatch to /url/B
getRequestDispatcher("/url/B").forward(request,response);
// Start async operation from within the target of the FORWARD
// dispatch
ac = request.startAsync();
...
ac.dispatch(); // ASYNC dispatch to /url/A
// FORWARD dispatch to /url/B
getRequestDispatcher("/url/B").forward(request,response);
// Start async operation from within the target of the FORWARD
// dispatch
ac = request.startAsync(request,response);
...
ac.dispatch(); // ASYNC dispatch to /url/B
Этот метод сразу возвращается после передачи запроса, и ответ возражает против контейнера управляемому потоку, на котором будет выполняться диспетчеризировать работа. Если этот метод вызывают прежде, чем инициируемые контейнером диспетчеризируют, который названный startAsync возвратил контейнеру, диспетчеризировать работа будет задержана, пока инициируемые контейнером не диспетчеризируют, возвратился к контейнеру.
Тип диспетчера запроса устанавливается в DispatcherType.ASYNC. В отличие от этого forward dispatches
, буфер ответа и заголовки не будут сброшены, и законно диспетчеризировать, даже если ответ уже фиксировался.
Управление запросом и ответ делегируются к диспетчеризировать цели, и ответ будет закрыт, когда диспетчеризировать цель не завершила выполнение, если ServletRequest#startAsync()
или ServletRequest#startAsync(ServletRequest, ServletResponse)
вызываются.
Любые ошибки или исключения, которые могут произойти во время выполнения этого метода, должны быть пойманы и обработаны контейнером, следующим образом:
onError
метод, все AsyncListener
экземпляры, зарегистрированные в ServletRequest, для которого этот AsyncContext создавался, и делает пойманный Throwable доступным через AsyncEvent#getThrowable
.complete()
или любой из dispatch()
методы, выполните ошибку, диспетчеризируют с кодом состояния, равным HttpServletResponse.SC_INTERNAL_SERVER_ERROR, и делают вышеупомянутый Throwable доступным как значение атрибута запроса RequestDispatcher.ERROR_EXCEPTION.complete()
или любой из dispatch()
методы, вызвать complete()
.Может быть самое большее одно асинхронное, диспетчеризируют работу на асинхронный цикл, который запускается звонком в один из ServletRequest#startAsync
методы. Любая попытка выполнить дополнительное асинхронное диспетчеризирует работу в пределах того же самого асинхронного цикла, приведет к IllegalStateException. Если startAsync впоследствии вызывают по диспетчеризированному запросу, то какое-либо диспетчеризирование или complete()
методы можно вызвать.
IllegalStateException
- если один из диспетчеризировать методов вызвали, и startAsync метод не вызвали во время получающегося, диспетчеризируют, или если complete()
был вызванServletRequest#getDispatcherType
void dispatch(java.lang.String path)
Параметр path интерпретируется таким же образом как в ServletRequest#getRequestDispatcher(String)
, в рамках ServletContext
от которого был инициализирован этот AsyncContext.
Связанные методы запроса всего пути запроса должны отразить диспетчеризировать цель, в то время как исходный URI запроса, путь контекста, информация пути, путь сервлета, и строка запроса могут быть восстановлены с ASYNC_REQUEST_URI
, ASYNC_CONTEXT_PATH
, ASYNC_PATH_INFO
, ASYNC_SERVLET_PATH
, и ASYNC_QUERY_STRING
атрибуты запроса. Эти атрибуты будут всегда отражать, что исходные элементы пути, даже под повторным диспетчеризирует.
Может быть самое большее одно асинхронное, диспетчеризируют работу на асинхронный цикл, который запускается звонком в один из ServletRequest#startAsync
методы. Любая попытка выполнить дополнительное асинхронное диспетчеризирует работу в пределах того же самого асинхронного цикла, приведет к IllegalStateException. Если startAsync впоследствии вызывают по диспетчеризированному запросу, то какое-либо диспетчеризирование или complete()
методы можно вызвать.
См. dispatch()
для дополнительных деталей, включая обработку ошибок.
path
- путь диспетчеризировать цели, определяющей контекст к ServletContext, от которого был инициализирован этот AsyncContext IllegalStateException
- если один из диспетчеризировать методов вызвали, и startAsync метод не вызвали во время получающегося, диспетчеризируют, или если complete()
был вызванServletRequest#getDispatcherType
void dispatch(ServletContext context, java.lang.String path)
Параметр path интерпретируется таким же образом как в ServletRequest#getRequestDispatcher(String)
, за исключением того, что это является определяющим контекст к данному context.
Связанные методы запроса всего пути запроса должны отразить диспетчеризировать цель, в то время как исходный URI запроса, путь контекста, информация пути, путь сервлета, и строка запроса могут быть восстановлены с ASYNC_REQUEST_URI
, ASYNC_CONTEXT_PATH
, ASYNC_PATH_INFO
, ASYNC_SERVLET_PATH
, и ASYNC_QUERY_STRING
атрибуты запроса. Эти атрибуты будут всегда отражать, что исходные элементы пути, даже под повторным диспетчеризирует.
Может быть самое большее одно асинхронное, диспетчеризируют работу на асинхронный цикл, который запускается звонком в один из ServletRequest#startAsync
методы. Любая попытка выполнить дополнительное асинхронное диспетчеризирует работу в пределах того же самого асинхронного цикла, приведет к IllegalStateException. Если startAsync впоследствии вызывают по диспетчеризированному запросу, то какое-либо диспетчеризирование или complete()
методы можно вызвать.
См. dispatch()
для дополнительных деталей, включая обработку ошибок.
context
- ServletContext диспетчеризировать целиpath
- путь диспетчеризировать цели, определяющей контекст к данному ServletContext IllegalStateException
- если один из диспетчеризировать методов вызвали, и startAsync метод не вызвали во время получающегося, диспетчеризируют, или если complete()
был вызванServletRequest#getDispatcherType
void complete()
Любые слушатели типа AsyncListener
это было зарегистрировано в ServletRequest, для которого создавался этот AsyncContext, будет вызван в их onComplete
метод.
Законно вызвать этот метод любое время после звонка ServletRequest#startAsync()
или ServletRequest#startAsync(ServletRequest, ServletResponse)
, и перед звонком в один из методов dispatch этого class. Если этот метод вызывают прежде, чем инициируемые контейнером диспетчеризируют, который названный startAsync возвратил контейнеру, то вызов не будет вступать в силу (и любые вызовы AsyncListener#onComplete(AsyncEvent)
будет задержан), пока инициируемые контейнером не диспетчеризируют, возвратился к контейнеру.
void start(java.lang.Runnable run)
run
- асинхронный обработчикvoid addListener(AsyncListener listener)
AsyncListener
с новым асинхронным циклом, который был запущен звонком в один из ServletRequest#startAsync
методы. Данный AsyncListener получит AsyncEvent
когда асинхронный цикл завершается успешно, времена, или приводит к ошибке.
Экземпляры AsyncListener будут уведомлены в порядке, в котором они были добавлены.
listener
- AsyncListener, который будет зарегистрирован IllegalStateException
- если этот метод вызывают после того, как инициируемые контейнером диспетчеризируют, во время который ServletRequest#startAsync
методы вызвали, возвратился к контейнеруvoid addListener(AsyncListener listener, ServletRequest servletRequest, ServletResponse servletResponse)
AsyncListener
с новым асинхронным циклом, который был запущен звонком в один из ServletRequest#startAsync
методы. Данный AsyncListener получит AsyncEvent
когда асинхронный цикл завершается успешно, времена, или приводит к ошибке.
Экземпляры AsyncListener будут уведомлены в порядке, в котором они были добавлены.
Данные объекты ServletRequest и ServletResponse будут сделаны доступными для данного AsyncListener через getSuppliedRequest
и getSuppliedResponse
методы, соответственно, AsyncEvent
поставленный этому. Эти объекты не должны быть считаны из или записаны, соответственно, в то время, когда AsyncEvent поставляют, потому что дополнительное обертывание, возможно, произошло, так как данный AsyncListener был зарегистрирован, но может использоваться, чтобы высвободить любые средства, связанные с ними.
listener
- AsyncListener, который будет зарегистрированservletRequest
- ServletRequest, который будет включен в AsyncEventservletResponse
- ServletResponse, который будет включен в AsyncEvent IllegalStateException
- если этот метод вызывают после того, как инициируемые контейнером диспетчеризируют, во время который ServletRequest#startAsync
методы вызвали, возвратился к контейнеру<T extends AsyncListener> T createListener(java.lang.Class<T> clazz) throws ServletException
AsyncListener
class. Возвращенный экземпляр AsyncListener может быть далее настроен прежде, чем он будет зарегистрирован в этом AsyncContext через звонок в один из addListener
методы.
Данный class AsyncListener должен определить нулевого конструктора параметра, который используется, чтобы инстанцировать его.
Этот метод поддерживает инжекцию ресурса, если данный clazz представляет Управляемый Боб. См. платформу EE Java и JSR 299 спецификаций для дополнительных деталей об Управляемых Бобах и инжекции ресурса.
Этот метод поддерживает любые аннотации, применимые к AsyncListener.
clazz
- AsyncListener class, чтобы инстанцировать ServletException
- если данный clazz не в состоянии быть инстанцированнымvoid setTimeout(long timeout)
Тайм-аут применяется к этому AsyncContext, как только инициируемые контейнером диспетчеризируют во время который ServletRequest#startAsync
методы вызвали, возвратился к контейнеру.
Тайм-аут истечет если ни один complete()
метод, ни любой из диспетчеризировать методов вызывают. Значение тайм-аута нуля или меньше не указывает ни на какой тайм-аут.
Если setTimeout(long)
не вызывается, тогда тайм-аут значения по умолчанию контейнера, который доступен через звонок getTimeout()
, будет применяться.
timeout
- тайм-аут в миллисекундах IllegalStateException
- если этот метод вызывают после того, как инициируемые контейнером диспетчеризируют, во время который ServletRequest#startAsync
методы вызвали, возвратился к контейнеруlong getTimeout()
Этот метод возвращает тайм-аут значения по умолчанию контейнера для асинхронных операций, или значение тайм-аута, которое передают к новому вызову setTimeout(long)
.
Значение тайм-аута нуля или меньше не указывает ни на какой тайм-аут.
|
|||||||||
ПРЕДЫДУЩИЙ СЛЕДУЮЩИЙ КЛАСС КЛАССА | ФРЕЙМЫ НИКАКИЕ ФРЕЙМЫ | ||||||||
СВОДКА: ВЛОЖЕННЫЙ | ПОЛЕ | CONSTR | МЕТОД | ДЕТАЛЬ: ПОЛЕ | CONSTR | МЕТОД |
Авторское право © 2009-2011, Oracle Corporation и/или его филиалы. Все права защищены. Использование подвергается
Сгенерированный на 10-February-2011 12:41