@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// Only set the status on the first call (the dispatch will trigger
// another call to this Servlet)
if (resp.getStatus() != HttpServletResponse.SC_BAD_REQUEST) {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
AsyncContext ac = req.startAsync();
ac.dispatch();
}
}
java类javax.servlet.AsyncContext的实例源码
TestErrorReportValve.java 文件源码
项目:tomcat7
阅读 44
收藏 0
点赞 0
评论 0
ServletRestDispatcher.java 文件源码
项目:incubator-servicecomb-java-chassis
阅读 41
收藏 0
点赞 0
评论 0
public void service(HttpServletRequest request, HttpServletResponse response) {
if (transport == null) {
transport = CseContext.getInstance().getTransportManager().findTransport(Const.RESTFUL);
}
// 异步场景
final AsyncContext asyncCtx = request.startAsync();
asyncCtx.addListener(restAsyncListener);
asyncCtx.setTimeout(ServletConfig.getServerTimeout());
HttpServletRequestEx requestEx = new StandardHttpServletRequestEx(request);
HttpServletResponseEx responseEx = new StandardHttpServletResponseEx(response);
RestServletProducerInvocation restProducerInvocation = new RestServletProducerInvocation();
restProducerInvocation.invoke(transport, requestEx, responseEx, httpServerFilters);
}
TestAsyncContextImpl.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 35
收藏 0
点赞 0
评论 0
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
track("doGet-");
AsyncContext ctx = req.startAsync();
ctx.setTimeout(3000);
ctx.addListener(new TrackingListener(true, false, "/async"));
String loopsParam = req.getParameter("loops");
Integer loopsAttr = (Integer) req.getAttribute("loops");
int loops = 0;
if (loopsAttr != null) {
loops = loopsAttr.intValue();
} else if (loopsParam != null) {
loops = Integer.parseInt(loopsParam);
}
if (loops > 1) {
loops--;
req.setAttribute("loops", Integer.valueOf(loops));
ctx.dispatch();
} else
throw new ServletException();
}
ReadingServlet.java 文件源码
项目:Mastering-Java-EE-Development-with-WildFly
阅读 30
收藏 0
点赞 0
评论 0
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter output = response.getWriter()) {
output.println("<html>");
output.println("<head>");
output.println("<title>Reading asynchronously</title>");
output.println("</head>");
output.println("<body>");
output.println("<h1>Reading asynchronously</h1>");
AsyncContext context = request.startAsync();
ServletInputStream input = request.getInputStream();
input.setReadListener(new ReadingListener(input, context));
output.println("</body>");
output.println("</html>");
}
}
TestAsyncContextImpl.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 38
收藏 0
点赞 0
评论 0
@Override
protected void doGet(HttpServletRequest req,
final HttpServletResponse resp)
throws ServletException, IOException {
final AsyncContext ctx = req.startAsync();
ctx.start(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(THREAD_SLEEP_TIME);
resp.setHeader("A", "xyz");
resp.setContentType("text/plain");
resp.setContentLength("OK".getBytes().length);
resp.getWriter().print("OK");
ctx.complete();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
TestErrorReportValve.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 37
收藏 0
点赞 0
评论 0
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// Only set the status on the first call (the dispatch will trigger
// another call to this Servlet)
if (resp.getStatus() != HttpServletResponse.SC_BAD_REQUEST) {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
AsyncContext ac = req.startAsync();
ac.dispatch();
}
}
BackendProxyServlet.java 文件源码
项目:bootstrap
阅读 48
收藏 0
点赞 0
评论 0
@Override
protected void onProxyResponseFailure(final HttpServletRequest clientRequest, final HttpServletResponse proxyResponse,
final Response serverResponse, final Throwable failure) {
_log.warn(failure.toString());
if (proxyResponse.isCommitted()) {
// Parent behavior
super.onProxyResponseFailure(clientRequest, proxyResponse, serverResponse, failure);
} else {
proxyResponse.resetBuffer();
if (failure instanceof TimeoutException) {
proxyResponse.setStatus(HttpServletResponse.SC_GATEWAY_TIMEOUT);
} else {
// Unavailable business server as JSON response
proxyResponse.setStatus(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
proxyResponse.setContentType("application/json");
try {
proxyResponse.getOutputStream().write("{\"code\":\"business-down\"}".getBytes(StandardCharsets.UTF_8));
} catch (final IOException ioe) {
_log.warn("Broken proxy stream", ioe);
}
}
proxyResponse.setHeader(HttpHeader.CONNECTION.asString(), HttpHeaderValue.CLOSE.asString());
final AsyncContext asyncContext = clientRequest.getAsyncContext();
asyncContext.complete();
}
}
AsyncExample.java 文件源码
项目:javalin
阅读 40
收藏 0
点赞 0
评论 0
public static void main(String[] args) {
Javalin app = Javalin.create().port(5454).start();
app.get("/test-custom", ctx -> {
AsyncContext asyncContext = ctx.request().startAsync();
simulateAsyncTask(() -> {
ctx.status(418);
asyncContext.complete();
});
});
app.get("/test-async", ctx -> ctx.async(() -> {
CompletableFuture<Void> future = new CompletableFuture<>();
simulateAsyncTask(() -> {
ctx.status(418);
future.complete(null);
});
return future;
}));
}
TestAsyncContextImpl.java 文件源码
项目:tomcat7
阅读 35
收藏 0
点赞 0
评论 0
@Override
protected void doGet(HttpServletRequest req,
final HttpServletResponse resp)
throws ServletException, IOException {
final AsyncContext ctx = req.startAsync();
ctx.start(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(THREAD_SLEEP_TIME);
resp.setHeader("A", "xyz");
resp.setContentType("text/plain");
resp.setContentLength("OK".getBytes().length);
resp.getWriter().print("OK");
ctx.complete();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
TestAsyncContextImpl.java 文件源码
项目:tomcat7
阅读 30
收藏 0
点赞 0
评论 0
@Override
protected void doGet(final HttpServletRequest req,
final HttpServletResponse resp)
throws ServletException, IOException {
final AsyncContext async = req.startAsync();
// Just for debugging
async.setTimeout(100000);
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(new Runnable() {
@Override
public void run() {
async.dispatch("/ServletC");
}
});
executor.shutdown();
}
TestAsyncContextImpl.java 文件源码
项目:tomcat7
阅读 39
收藏 0
点赞 0
评论 0
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
TestAsyncContextImpl.track("AsyncErrorPageGet-");
final AsyncContext ctxt = req.getAsyncContext();
switch(mode) {
case COMPLETE:
TestAsyncContextImpl.track("Complete-");
ctxt.complete();
break;
case DISPATCH:
TestAsyncContextImpl.track("Dispatch-");
ctxt.dispatch("/error/nonasync");
break;
case NO_COMPLETE:
TestAsyncContextImpl.track("NoOp-");
break;
default:
// Impossible
break;
}
}
TestAbstractHttp11Processor.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 32
收藏 0
点赞 0
评论 0
@Override
protected void doPut(HttpServletRequest req, final HttpServletResponse resp)
throws ServletException, IOException {
final AsyncContext ac = req.startAsync();
ac.start(new Runnable() {
@Override
public void run() {
resp.setContentType("text/plain");
resp.setCharacterEncoding("UTF-8");
try {
resp.getWriter().print("OK");
} catch (IOException e) {
// Should never happen. Test will fail if it does.
}
ac.complete();
}
});
}
TestAsyncContextImpl.java 文件源码
项目:tomcat7
阅读 44
收藏 0
点赞 0
评论 0
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
track("doGet-");
AsyncContext ctx = req.startAsync();
ctx.setTimeout(3000);
ctx.addListener(new TrackingListener(true, false, "/async"));
String loopsParam = req.getParameter("loops");
Integer loopsAttr = (Integer) req.getAttribute("loops");
int loops = 0;
if (loopsAttr != null) {
loops = loopsAttr.intValue();
} else if (loopsParam != null) {
loops = Integer.parseInt(loopsParam);
}
if (loops > 1) {
loops--;
req.setAttribute("loops", Integer.valueOf(loops));
ctx.dispatch();
} else
throw new ServletException();
}
EventServer.java 文件源码
项目:fpc
阅读 40
收藏 0
点赞 0
评论 0
/**
* Method for stream initialization
* @param clientUri - Client Uri
* @param request - The servlet request object
* @param response - The servlet Response Object
*/
private void init(String clientUri,HttpServletRequest request, HttpServletResponse response){
LOG.info("Response Stream Inititated");
try{
HttpSession session = request.getSession();
session.setMaxInactiveInterval(72*60*60);
EventClient client = new EventClient();
client.connectToClient(clientUri);
response.setHeader("Content-Type", "text/event-stream");
response.setHeader("Cache-Control", "no-cache, no-store");
response.setHeader("Connection", "keep-alive");
AsyncContext asyncContext = request.startAsync(request,response);
asyncContext.setTimeout(72*60*60*1000);
asyncContext.getResponse().setBufferSize(1200);
try {
asyncContext.getResponse().flushBuffer();
} catch (IOException e1) {
ErrorLog.logError(e1.getMessage(),e1.getStackTrace());
}
ServletContext servletContext = request.getServletContext();
Map<String,AsyncContext> responseStreams = (ConcurrentHashMap<String,AsyncContext>) servletContext.getAttribute("responseStreams");
responseStreams.put(clientUri,asyncContext);
} catch (Exception e){
ErrorLog.logError(e.getMessage(),e.getStackTrace());
}
}
AsyncDispatcherServlet.java 文件源码
项目:Spring-Security-Third-Edition
阅读 42
收藏 0
点赞 0
评论 0
@Override
protected void doDispatch(final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final AsyncContext ac = request.startAsync(request, response);
ac.setTimeout(TIME_OUT);
// FIXME: convert to Lambda
FutureTask task = new FutureTask(new Runnable() {
@Override
public void run() {
try {
logger.debug("Dispatching request " + request);
AsyncDispatcherServlet.super.doDispatch(request, response);
logger.debug("doDispatch returned from processing request " + request);
ac.complete();
} catch (Exception ex) {
logger.error("Error in async request", ex);
}
}
}, null);
ac.addListener(new AsyncDispatcherServletListener(task));
exececutor.execute(task);
}
TestAsyncContextImpl.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 35
收藏 0
点赞 0
评论 0
@Override
protected void doGet(final HttpServletRequest req,
final HttpServletResponse resp)
throws ServletException, IOException {
final AsyncContext async = req.startAsync();
// Just for debugging
async.setTimeout(100000);
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(new Runnable() {
@Override
public void run() {
async.dispatch("/ServletC");
}
});
executor.shutdown();
}
AWSXRayServletFilterTest.java 文件源码
项目:aws-xray-sdk-java
阅读 35
收藏 0
点赞 0
评论 0
@Test
public void testAsyncServletRequestHasListenerAdded() throws IOException, ServletException {
AWSXRayServletFilter servletFilter = new AWSXRayServletFilter("test");
AsyncContext asyncContext = Mockito.mock(AsyncContext.class);
HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
Mockito.when(request.getRequestURL()).thenReturn(new StringBuffer("test_url"));
Mockito.when(request.getMethod()).thenReturn("TEST_METHOD");
Mockito.when(request.isAsyncStarted()).thenReturn(true);
Mockito.when(request.getAsyncContext()).thenReturn(asyncContext);
HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
FilterChain chain = Mockito.mock(FilterChain.class);
servletFilter.doFilter(request, response, chain);
Mockito.verify(asyncContext, Mockito.times(1)).addListener(Mockito.any());
}
TestAsyncContextImpl.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 39
收藏 0
点赞 0
评论 0
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
final AsyncContext asyncContext =
request.startAsync(request, response);
asyncContext.addListener(new TrackingListener(false, false, null));
asyncContext.start(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(THREAD_SLEEP_TIME);
TestAsyncContextImpl.track("Runnable-");
asyncContext.complete();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
TestAsyncContextImpl.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 44
收藏 0
点赞 0
评论 0
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
TestAsyncContextImpl.track("AsyncErrorPageGet-");
final AsyncContext ctxt = req.getAsyncContext();
switch(mode) {
case COMPLETE:
TestAsyncContextImpl.track("Complete-");
ctxt.complete();
break;
case DISPATCH:
TestAsyncContextImpl.track("Dispatch-");
ctxt.dispatch("/error/nonasync");
break;
case NO_COMPLETE:
TestAsyncContextImpl.track("NoOp-");
break;
default:
// Impossible
break;
}
}
AsyncStockServlet.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 33
收藏 0
点赞 0
评论 0
public void writeStock(AsyncContext actx, Stock stock) {
HttpServletResponse response = (HttpServletResponse)actx.getResponse();
try {
PrintWriter writer = response.getWriter();
writer.write("STOCK#");//make client parsing easier
writer.write(stock.getSymbol());
writer.write("#");
writer.write(stock.getValueAsString());
writer.write("#");
writer.write(stock.getLastChangeAsString());
writer.write("#");
writer.write(String.valueOf(stock.getCnt()));
writer.write("\n");
writer.flush();
response.flushBuffer();
}catch (IOException x) {
try {actx.complete();}catch (Exception ignore){/* Ignore */}
}
}
TestAsyncContextImpl.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 33
收藏 0
点赞 0
评论 0
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.getParameter(PARAM_NAME);
AsyncContext actxt = req.startAsync();
actxt.addListener(new Bug54178AsyncListener());
actxt.complete();
}
TestAsyncContextImpl.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 35
收藏 0
点赞 0
评论 0
@Override
public void service(ServletRequest req, ServletResponse resp)
throws ServletException, IOException {
if (DispatcherType.ASYNC != req.getDispatcherType()) {
AsyncContext asyncContext;
if ("y".equals(req.getParameter(CUSTOM_REQ_RESP))) {
asyncContext = req.startAsync(
new ServletRequestWrapper(req),
new ServletResponseWrapper(resp));
} else {
asyncContext = req.startAsync();
}
if ("y".equals(req.getParameter(EMPTY_DISPATCH))) {
asyncContext.dispatch();
} else {
asyncContext.dispatch("/target");
}
try {
asyncContext.dispatch("/nonExistingServlet");
TestAsyncContextImpl.track("FAIL");
} catch (IllegalStateException e) {
TestAsyncContextImpl.track("OK");
}
} else {
TestAsyncContextImpl.track("DispatchingGenericServletGet-");
}
}
TestVertxServerRequestToHttpServletRequest.java 文件源码
项目:incubator-servicecomb-java-chassis
阅读 45
收藏 0
点赞 0
评论 0
@Test
public void testGetAsyncContext() {
AsyncContext asyncContext =
Deencapsulation.getField(VertxServerRequestToHttpServletRequest.class, "EMPTY_ASYNC_CONTEXT");
Assert.assertSame(asyncContext, request.getAsyncContext());
}
TestAsyncContextImpl.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 38
收藏 0
点赞 0
评论 0
@Override
protected void doGet(final HttpServletRequest req,
final HttpServletResponse resp)
throws ServletException, IOException {
String echo = req.getParameter("echo");
AsyncContext actxt = req.startAsync();
TestAsyncContextImpl.track("OK");
if (echo != null) {
TestAsyncContextImpl.track("-" + echo);
}
// Speed up the test by reducing the timeout
actxt.setTimeout(ASYNC_TIMEOUT);
}
AsyncContextUtils.java 文件源码
项目:dooo
阅读 33
收藏 0
点赞 0
评论 0
public static void compelete(AsyncContext asyncContext) {
try {
asyncContext.complete();
} catch (Exception e) {
LOGGER.error("unexpect error", e);
}
}
Request.java 文件源码
项目:lazycat
阅读 40
收藏 0
点赞 0
评论 0
@Override
public AsyncContext getAsyncContext() {
if (!isAsyncStarted()) {
throw new IllegalStateException(sm.getString("request.notAsync"));
}
return asyncContext;
}
TestAsyncContextImpl.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 33
收藏 0
点赞 0
评论 0
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
if ("y".equals(req.getParameter(DISPATCH_CHECK))) {
if (req.getDispatcherType() != DispatcherType.ASYNC) {
track("WrongDispatcherType-");
}
}
track("DispatchingServletGet-");
final int iter = Integer.parseInt(req.getParameter(ITER_PARAM)) - 1;
final AsyncContext ctxt = req.startAsync();
if (addTrackingListener) {
TrackingListener listener =
new TrackingListener(completeOnError, true, null);
ctxt.addListener(listener);
}
Runnable run = new Runnable() {
@Override
public void run() {
if (iter > 0) {
ctxt.dispatch("/stage1?" + ITER_PARAM + "=" + iter +
"&" + DISPATCH_CHECK + "=y");
} else {
ctxt.dispatch("/stage2");
}
}
};
if ("y".equals(req.getParameter("useThread"))) {
new Thread(run).start();
} else {
run.run();
}
}
BackendProxyServletTest.java 文件源码
项目:bootstrap
阅读 35
收藏 0
点赞 0
评论 0
@Test
public void onProxyResponseFailureCommitted() throws IOException, ServletException {
init();
final HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
final ServletOutputStream os = Mockito.mock(ServletOutputStream.class);
Mockito.doThrow(new IOException()).when(os).write(ArgumentMatchers.any(byte[].class));
Mockito.when(response.getOutputStream()).thenReturn(os);
Mockito.when(response.isCommitted()).thenReturn(true);
final HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
final AsyncContext asyncContext = Mockito.mock(AsyncContext.class);
Mockito.when(request.getAsyncContext()).thenReturn(asyncContext);
servlet.onProxyResponseFailure(request, response, null, new Exception());
}
NotificationService.java 文件源码
项目:fpc
阅读 40
收藏 0
点赞 0
评论 0
public void contextInitialized(ServletContextEvent sce) {
Map<String, AsyncContext> notificationStreams = new ConcurrentHashMap<String, AsyncContext>();
sce.getServletContext().setAttribute("notificationStreams", notificationStreams);
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
String clientId = null;
AsyncContext asyncContext = null;
while(true)
{
try {
Map.Entry<String, String> entry = blockingQueue.take();
clientId = entry.getKey();
asyncContext = notificationStreams.get(clientId);
if(notificationStreams.get(entry.getKey()) != null){
ServletOutputStream out = asyncContext.getResponse().getOutputStream();
out.write(entry.getValue().getBytes());
out.flush();
asyncContext.getResponse().flushBuffer();
}
} catch (Exception e){
ErrorLog.logError("Cannot write to client", e.getStackTrace());
asyncContext.complete();
notificationStreams.remove(clientId);
break;
}
}
}
});
thread.start();
}
TestAsyncContextImpl.java 文件源码
项目:tomcat7
阅读 35
收藏 0
点赞 0
评论 0
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
if ("y".equals(req.getParameter(DISPATCH_CHECK))) {
if (req.getDispatcherType() != DispatcherType.ASYNC) {
track("WrongDispatcherType-");
}
}
track("DispatchingServletGet-");
final int iter = Integer.parseInt(req.getParameter(ITER_PARAM)) - 1;
final AsyncContext ctxt = req.startAsync();
if (addTrackingListener) {
TrackingListener listener =
new TrackingListener(completeOnError, true, null);
ctxt.addListener(listener);
}
Runnable run = new Runnable() {
@Override
public void run() {
if (iter > 0) {
ctxt.dispatch("/stage1?" + ITER_PARAM + "=" + iter +
"&" + DISPATCH_CHECK + "=y");
} else {
ctxt.dispatch("/stage2");
}
}
};
if ("y".equals(req.getParameter("useThread"))) {
new Thread(run).start();
} else {
run.run();
}
}