1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package javax.servlet;
/**
* Provides the context for asynchronous request handling
*
* @since Servlet 3.0
*/
public interface AsyncContext {
/**
* The attribute name for the URI of the async request
*/
public static final String ASYNC_REQUEST_URI =
"javax.servlet.async.request_uri";
/**
* The attribute name for the Context Path of the async request
*/
public static final String ASYNC_CONTEXT_PATH =
"javax.servlet.async.context_path";
/**
* The attribute name for the Mapping of the async request
*/
public static final String ASYNC_MAPPING =
"javax.servlet.async.mapping";
/**
* The attribute name for the Path Info of the async request
*/
public static final String ASYNC_PATH_INFO =
"javax.servlet.async.path_info";
/**
* The attribute name for the Servlet Path of the async request
*/
public static final String ASYNC_SERVLET_PATH =
"javax.servlet.async.servlet_path";
/**
* The attribute name for the Query String of the async request
*/
public static final String ASYNC_QUERY_STRING =
"javax.servlet.async.query_string";
/**
* @return a reference to the ServletRequest object
*/
ServletRequest getRequest();
/**
* @return a reference to the ServletResponse object
*/
ServletResponse getResponse();
/**
* @return true if the Request and Response are the original ones
*/
boolean hasOriginalRequestAndResponse();
/**
* @throws IllegalStateException if this method is called when the request
* is not in asynchronous mode. The request is in asynchronous mode after
* {@link javax.servlet.http.HttpServletRequest#startAsync()} or
* {@link javax.servlet.http.HttpServletRequest#startAsync(ServletRequest,
* ServletResponse)} has been called and before {@link #complete()} or any
* other dispatch() method has been called.
*/
void dispatch();
/**
* @param path The path to which the request/response should be dispatched
* relative to the {@link ServletContext} from which this async
* request was started.
*
* @throws IllegalStateException if this method is called when the request
* is not in asynchronous mode. The request is in asynchronous mode after
* {@link javax.servlet.http.HttpServletRequest#startAsync()} or
* {@link javax.servlet.http.HttpServletRequest#startAsync(ServletRequest,
* ServletResponse)} has been called and before {@link #complete()} or any
* other dispatch() method has been called.
*/
void dispatch(String path);
/**
* @param path The path to which the request/response should be dispatched
* relative to the specified {@link ServletContext}.
* @param context The {@link ServletContext} to which the request/response
* should be dispatched.
*
* @throws IllegalStateException if this method is called when the request
* is not in asynchronous mode. The request is in asynchronous mode after
* {@link javax.servlet.http.HttpServletRequest#startAsync()} or
* {@link javax.servlet.http.HttpServletRequest#startAsync(ServletRequest,
* ServletResponse)} has been called and before {@link #complete()} or any
* other dispatch() method has been called.
*/
void dispatch(ServletContext context, String path);
/**
* Completes the async request processing and closes the response stream
*/
void complete();
/**
* Starts a new thread to process the asynchronous request
*
* @param run a Runnable that the new thread will run
*/
void start(Runnable run);
/**
* Adds an event listener that will be called for different AsyncEvents fire
*
* @param listener an AsyncListener that will be called with AsyncEvent objects
*/
void addListener(AsyncListener listener);
/**
* Adds an event listener that will be called when different AsyncEvents fire
*
* @param listener an AsyncListener that will be called with AsyncEvent objects
* @param request the ServletRequest that will be passed with the AsyncEvent
* @param response the ServletResponse that will be passed with the AsyncEvent
*/
void addListener(AsyncListener listener, ServletRequest request,
ServletResponse response);
/**
* Creates and returns an AsyncListener object
*
* @param <T> The type to create that extends AsyncListener
* @param clazz The class to instantiate to create the listener
* @return the newly created AsyncListener object
* @throws ServletException if the listener cannot be created
*/
<T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException;
/**
* Set the timeout.
*
* @param timeout The timeout in milliseconds. 0 or less indicates no
* timeout.
*/
void setTimeout(long timeout);
/**
* Get the current timeout.
*
* @return The timeout in milliseconds. 0 or less indicates no timeout.
*/
long getTimeout();
}
|