类javax.servlet.AsyncEvent源码实例Demo

下面列出了怎么用javax.servlet.AsyncEvent的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Jinx   文件: NettyAsyncContext.java
@Override
public void dispatch(ServletContext context, String path) {
    final HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
    httpRequest.setAttribute(ASYNC_CONTEXT_PATH, httpRequest.getContextPath());
    httpRequest.setAttribute(ASYNC_PATH_INFO, httpRequest.getPathInfo());
    httpRequest.setAttribute(ASYNC_QUERY_STRING, httpRequest.getQueryString());
    httpRequest.setAttribute(ASYNC_REQUEST_URI, httpRequest.getRequestURI());
    httpRequest.setAttribute(ASYNC_SERVLET_PATH, httpRequest.getServletPath());
    final NettyRequestDispatcher dispatcher = (NettyRequestDispatcher) context.getRequestDispatcher(path);
    ctx.executor().submit(() -> {
        try {
            dispatcher.dispatch(httpRequest, servletResponse);
            // TODO is this right?
            for (AsyncListener listener : ImmutableList.copyOf(listeners)) {
                listener.onComplete(new AsyncEvent(NettyAsyncContext.this));
            }
        } catch (ServletException | IOException e) {
            // TODO notify listeners
            e.printStackTrace();
        }
    });
}
 
@Override
public void onTimeout(AsyncEvent event) throws IOException {
    // Need to handle timeouts for THREAD_AFTER_EXIT in the listener to
    // avoid concurrency issues.
    if (endTiming == EndTiming.THREAD_AFTER_EXIT) {
        switch (asyncEnd) {
            case COMPLETE: {
                asyncContext.complete();
                break;
            }
            case DISPATCH: {
                dispatch = true;
                asyncContext.dispatch();
                break;
            }
            default:
                // NO-OP
        }
    }
    if (servletRequest.isAsyncStarted() == asyncEnd.isNone()) {
        failed.set(false);
    }
    endLatch.countDown();
}
 
源代码3 项目: tomee   文件: OpenEJBAsyncContext.java
public OpenEJBAsyncContext(final HttpServletRequest request, final ServletResponse response, final String contextPath) {
    if (es == null) {
        synchronized (OpenEJBAsyncContext.class) { // we don't care since impl is not really thread safe, just here for testing
            if (es == null) {
                init();
            }
        }
    }

    this.request = request;
    this.contextPath = contextPath;
    if (contextPath != null) {
        for (final AppContext app : SystemInstance.get().getComponent(ContainerSystem.class).getAppContexts()) {
            for (final WebContext web : app.getWebContexts()) {
                if (web.getContextRoot().replace("/", "").equals(contextPath.replace("/", ""))) {
                    this.context = web;
                    break;
                }
            }
        }
    }
    this.response = response;
    this.socket = Socket.class.cast(request.getAttribute("openejb_socket"));
    this.event = new AsyncEvent(this, request, response);
    INITIALIZED.add(this);
}
 
@Override
public void onTimeout(AsyncEvent event) throws IOException {
    boolean expectedAsyncStarted = true;

    TestAsyncContextImpl.track("onTimeout-");
    if (completeOnTimeout){
        event.getAsyncContext().complete();
        expectedAsyncStarted = false;
    }
    if (dispatchUrl != null) {
        event.getAsyncContext().dispatch(dispatchUrl);
        expectedAsyncStarted = false;
    }

    ServletRequest req = event.getSuppliedRequest();
    asyncStartedCorrect = (expectedAsyncStarted == req.isAsyncStarted());
}
 
源代码5 项目: pinpoint   文件: WeblogicAsyncListener.java
@Override
public void onTimeout(AsyncEvent asyncEvent) throws IOException {
    if (isDebug) {
        logger.debug("Timeout asynchronous operation. event={}", asyncEvent);
    }

    if (asyncEvent == null) {
        if (isDebug) {
            logger.debug("Invalid event. event is null");
        }
        return;
    }

    try {
        this.asyncListenerInterceptorHelper.timeout(asyncEvent.getThrowable());
    } catch (Throwable t) {
        logger.info("Failed to async event handle. event={}", asyncEvent, t);
    }
}
 
@Test
public void startDeferredResultProcessingTimeoutAndResumeThroughCallback() throws Exception {

	final DeferredResult<Integer> deferredResult = new DeferredResult<>();
	deferredResult.onTimeout(new Runnable() {
		@Override
		public void run() {
			deferredResult.setResult(23);
		}
	});

	this.asyncManager.startDeferredResultProcessing(deferredResult);

	AsyncEvent event = null;
	this.asyncWebRequest.onTimeout(event);

	assertTrue(this.asyncManager.hasConcurrentResult());
	assertEquals(23, this.asyncManager.getConcurrentResult());
	assertEquals("/test", ((MockAsyncContext) this.servletRequest.getAsyncContext()).getDispatchedPath());
}
 
源代码7 项目: pinpoint   文件: JbossAsyncListener.java
@Override
public void onComplete(AsyncEvent asyncEvent) throws IOException {
    if (isDebug) {
        logger.debug("Complete asynchronous operation. event={}", asyncEvent);
    }

    if (asyncEvent == null) {
        if (isDebug) {
            logger.debug("Invalid event. event is null");
        }
        return;
    }

    try {
        final int statusCode = getStatusCode(asyncEvent);
        this.asyncListenerInterceptorHelper.complete(asyncEvent.getThrowable(), statusCode);
    } catch (Throwable t) {
        if (isInfo) {
            logger.info("Failed to async event handle. event={}", asyncEvent, t);
        }
    }
}
 
@Test
public void startDeferredResultProcessingAfterTimeoutException() throws Exception {

	DeferredResult<Integer> deferredResult = new DeferredResult<>();
	final Exception exception = new Exception();

	DeferredResultProcessingInterceptor interceptor = new DeferredResultProcessingInterceptor() {
		@Override
		public <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> result) throws Exception {
			throw exception;
		}
	};

	this.asyncManager.registerDeferredResultInterceptor("interceptor", interceptor);
	this.asyncManager.startDeferredResultProcessing(deferredResult);

	AsyncEvent event = null;
	this.asyncWebRequest.onTimeout(event);

	assertTrue(this.asyncManager.hasConcurrentResult());
	assertEquals(exception, this.asyncManager.getConcurrentResult());
	assertEquals("/test", ((MockAsyncContext) this.servletRequest.getAsyncContext()).getDispatchedPath());
}
 
源代码9 项目: pinpoint   文件: WeblogicAsyncListener.java
@Override
public void onError(AsyncEvent asyncEvent) throws IOException {
    if (isDebug) {
        logger.debug("Error asynchronous operation. event={}", asyncEvent);
    }

    if (asyncEvent == null) {
        if (isInfo) {
            logger.info("Invalid event. event is null");
        }
        return;
    }

    try {
        this.asyncListenerInterceptorHelper.error(asyncEvent.getThrowable());
    } catch (Throwable t) {
        if (isInfo) {
            logger.info("Failed to async event handle. event={}", asyncEvent, t);
        }
    }
}
 
源代码10 项目: lams   文件: AsyncContextImpl.java
private void onAsyncComplete() {
    final boolean setupRequired = SecurityActions.currentServletRequestContext() == null;
    servletRequestContext.getCurrentServletContext().invokeRunnable(servletRequestContext.getExchange(), new Runnable() {

        @Override
        public void run() {
            //now run request listeners
            setupRequestContext(setupRequired);
            try {
                for (final BoundAsyncListener listener : asyncListeners) {
                    AsyncEvent event = new AsyncEvent(AsyncContextImpl.this, listener.servletRequest, listener.servletResponse);
                    try {
                        listener.asyncListener.onComplete(event);
                    } catch (IOException e) {
                        UndertowServletLogger.REQUEST_LOGGER.ioExceptionDispatchingAsyncEvent(e);
                    } catch (Throwable t) {
                        UndertowServletLogger.REQUEST_LOGGER.failureDispatchingAsyncEvent(t);
                    }
                }
            } finally {
                tearDownRequestContext(setupRequired);
            }
        }
    });
}
 
@Test
public void startCallableProcessingAfterException() throws Exception {

	StubCallable callable = new StubCallable();
	Exception exception = new Exception();

	CallableProcessingInterceptor interceptor = mock(CallableProcessingInterceptor.class);
	Exception e = new Exception();
	given(interceptor.handleError(this.asyncWebRequest, callable, e)).willThrow(exception);

	this.asyncManager.registerCallableInterceptor("errorInterceptor", interceptor);
	this.asyncManager.startCallableProcessing(callable);

	AsyncEvent event = new AsyncEvent(new MockAsyncContext(this.servletRequest, this.servletResponse), e);
	this.asyncWebRequest.onError(event);

	assertTrue(this.asyncManager.hasConcurrentResult());
	assertEquals(exception, this.asyncManager.getConcurrentResult());
	assertEquals("/test", ((MockAsyncContext) this.servletRequest.getAsyncContext()).getDispatchedPath());

	verify(interceptor).beforeConcurrentHandling(this.asyncWebRequest, callable);
}
 
源代码12 项目: opencensus-java   文件: OcHttpServletListener.java
@Override
public void onComplete(AsyncEvent event) {
  ServletResponse response = event.getSuppliedResponse();
  if (response instanceof HttpServletResponse) {
    OcHttpServletUtil.recordMessageSentEvent(handler, context, (HttpServletResponse) response);
  }
  handler.handleEnd(
      context,
      (HttpServletRequest) event.getSuppliedRequest(),
      (HttpServletResponse) event.getSuppliedResponse(),
      null);
  this.close();
}
 
源代码13 项目: Tomcat8-Source-Read   文件: AsyncListenerWrapper.java
private AsyncEvent customizeEvent(AsyncEvent event) {
    if (servletRequest != null && servletResponse != null) {
        return new AsyncEvent(event.getAsyncContext(), servletRequest, servletResponse,
                event.getThrowable());
    } else {
        return event;
    }
}
 
源代码14 项目: Tomcat8-Source-Read   文件: AsyncContextImpl.java
public void setStarted(Context context, ServletRequest request,
        ServletResponse response, boolean originalRequestResponse) {

    synchronized (asyncContextLock) {
        this.request.getCoyoteRequest().action(
                ActionCode.ASYNC_START, this);

        this.context = context;
        context.incrementInProgressAsyncCount();
        this.servletRequest = request;
        this.servletResponse = response;
        this.hasOriginalRequestAndResponse = originalRequestResponse;
        this.event = new AsyncEvent(this, request, response);

        List<AsyncListenerWrapper> listenersCopy = new ArrayList<>();
        listenersCopy.addAll(listeners);
        listeners.clear();
        if (log.isDebugEnabled()) {
            log.debug(sm.getString("asyncContextImpl.fireOnStartAsync"));
        }
        for (AsyncListenerWrapper listener : listenersCopy) {
            try {
                listener.fireOnStartAsync(event);
            } catch (Throwable t) {
                ExceptionUtils.handleThrowable(t);
                log.warn(sm.getString("asyncContextImpl.onStartAsyncError",
                        listener.getClass().getName()), t);
            }
        }
    }
}
 
源代码15 项目: component-runtime   文件: AsyncContextImpl.java
public void onError(final Throwable throwable) {
    final AsyncEvent event = new AsyncEvent(this, request, response, throwable);
    executeOnListeners(l -> l.onError(event), null);
    if (!response.isCommitted() && HttpServletResponse.class.isInstance(response)) {
        final HttpServletResponse http = HttpServletResponse.class.cast(response);
        http.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    }
    complete();
}
 
源代码16 项目: Tomcat8-Source-Read   文件: TestAsyncContextImpl.java
@Override
public void onError(AsyncEvent event) throws IOException {
    boolean expectedAsyncStarted = true;

    TestAsyncContextImpl.track("onError-");
    if (completeOnError) {
        event.getAsyncContext().complete();
        expectedAsyncStarted = false;
    }

    ServletRequest req = event.getSuppliedRequest();
    asyncStartedCorrect = (expectedAsyncStarted == req.isAsyncStarted());
}
 
源代码17 项目: spring4-understanding   文件: MockAsyncContext.java
@Override
public void complete() {
	MockHttpServletRequest mockRequest = WebUtils.getNativeRequest(request, MockHttpServletRequest.class);
	if (mockRequest != null) {
		mockRequest.setAsyncStarted(false);
	}
	for (AsyncListener listener : this.listeners) {
		try {
			listener.onComplete(new AsyncEvent(this, this.request, this.response));
		}
		catch (IOException e) {
			throw new IllegalStateException("AsyncListener failure", e);
		}
	}
}
 
源代码18 项目: java-specialagent   文件: TracingAsyncListener.java
@Override
public void onError(AsyncEvent event) throws IOException {
    HttpServletRequest httpRequest = (HttpServletRequest) event.getSuppliedRequest();
    HttpServletResponse httpResponse = (HttpServletResponse) event.getSuppliedResponse();
    for (ServletFilterSpanDecorator spanDecorator: spanDecorators) {
        spanDecorator.onError(httpRequest,
            httpResponse,
            event.getThrowable(),
            span);
    }
}
 
@SuppressWarnings("unchecked")
@Test
public void onErrorHandlerAfterOnErrorEvent() throws Exception {
	Consumer<Throwable> handler = mock(Consumer.class);
	this.asyncRequest.addErrorHandler(handler);

	this.asyncRequest.startAsync();
	Exception e = new Exception();
	this.asyncRequest.onError(new AsyncEvent(this.request.getAsyncContext(), e));

	verify(handler).accept(e);
}
 
@Test
public void testServletUsesPassedInRecorder() throws IOException, ServletException {
    AWSXRayRecorder customRecorder = Mockito.spy(getMockRecorder());
    AWSXRayServletFilter servletFilter = new AWSXRayServletFilter(new FixedSegmentNamingStrategy("test"), customRecorder);

    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 = mockChain(request, response);

    AsyncEvent event = Mockito.mock(AsyncEvent.class);
    Mockito.when(event.getSuppliedRequest()).thenReturn(request);
    Mockito.when(event.getSuppliedResponse()).thenReturn(response);

    servletFilter.doFilter(request, response, chain);
    Assert.assertNull(AWSXRay.getTraceEntity());

    AWSXRayServletAsyncListener listener = (AWSXRayServletAsyncListener) Whitebox.getInternalState(servletFilter, "listener");
    listener.onComplete(event);

    Mockito.verify(customRecorder.getEmitter(), Mockito.times(1)).sendSegment(Mockito.any());
}
 
源代码21 项目: pinpoint   文件: JettyAsyncListener.java
private int getStatusCode(AsyncEvent asyncEvent) {
    try {
        if (asyncEvent.getSuppliedResponse() instanceof HttpServletResponse) {
            return ((HttpServletResponse) asyncEvent.getSuppliedResponse()).getStatus();
        }
    } catch (Exception ignored) {
    }
    return 0;
}
 
@Test
public void startAsyncAfterCompleted() throws Exception {
	this.asyncRequest.onComplete(new AsyncEvent(null));
	try {
		this.asyncRequest.startAsync();
		fail("expected exception");
	}
	catch (IllegalStateException ex) {
		assertEquals("Async processing has already completed", ex.getMessage());
	}
}
 
@Test
public void startDeferredResultProcessingErrorAndResumeWithDefaultResult() throws Exception {

	Exception e = new Exception();
	DeferredResult<Throwable> deferredResult = new DeferredResult<>(null, e);
	this.asyncManager.startDeferredResultProcessing(deferredResult);

	AsyncEvent event = new AsyncEvent(new MockAsyncContext(this.servletRequest, this.servletResponse), e);
	this.asyncWebRequest.onError(event);

	assertTrue(this.asyncManager.hasConcurrentResult());
	assertEquals(e, this.asyncManager.getConcurrentResult());
	assertEquals("/test", ((MockAsyncContext) this.servletRequest.getAsyncContext()).getDispatchedPath());
}
 
源代码24 项目: tomcatsrc   文件: AsyncContextImpl.java
public void setStarted(Context context, ServletRequest request,
        ServletResponse response, boolean originalRequestResponse) {

    synchronized (asyncContextLock) {
        this.request.getCoyoteRequest().action(
                ActionCode.ASYNC_START, this);

        this.context = context;
        this.servletRequest = request;
        this.servletResponse = response;
        this.hasOriginalRequestAndResponse = originalRequestResponse;
        this.event = new AsyncEvent(this, request, response);

        List<AsyncListenerWrapper> listenersCopy =
            new ArrayList<AsyncListenerWrapper>();
        listenersCopy.addAll(listeners);
        listeners.clear();
        for (AsyncListenerWrapper listener : listenersCopy) {
            try {
                listener.fireOnStartAsync(event);
            } catch (Throwable t) {
                ExceptionUtils.handleThrowable(t);
                log.warn("onStartAsync() failed for listener of type [" +
                        listener.getClass().getName() + "]", t);
            }
        }
    }
}
 
@SuppressWarnings("unchecked")
@Test
public void onErrorHandlerAfterOnErrorEvent() throws Exception {
	Consumer<Throwable> handler = mock(Consumer.class);
	this.asyncRequest.addErrorHandler(handler);

	this.asyncRequest.startAsync();
	Exception e = new Exception();
	this.asyncRequest.onError(new AsyncEvent(this.request.getAsyncContext(), e));

	verify(handler).accept(e);
}
 
@Test
public void onCompletionHandlerAfterOnCompleteEvent() throws Exception {
	Runnable handler = mock(Runnable.class);
	this.asyncRequest.addCompletionHandler(handler);

	this.asyncRequest.startAsync();
	this.asyncRequest.onComplete(new AsyncEvent(this.request.getAsyncContext()));

	verify(handler).run();
	assertTrue(this.asyncRequest.isAsyncComplete());
}
 
源代码27 项目: spring-analysis-note   文件: MockAsyncContext.java
@Override
public void complete() {
	MockHttpServletRequest mockRequest = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);
	if (mockRequest != null) {
		mockRequest.setAsyncStarted(false);
	}
	for (AsyncListener listener : this.listeners) {
		try {
			listener.onComplete(new AsyncEvent(this, this.request, this.response));
		}
		catch (IOException ex) {
			throw new IllegalStateException("AsyncListener failure", ex);
		}
	}
}
 
源代码28 项目: pinpoint   文件: JettyAsyncListener.java
@Override
public void onStartAsync(AsyncEvent asyncEvent) throws IOException {
}
 
源代码29 项目: Tomcat8-Source-Read   文件: AsyncStockServlet.java
@Override
public void onError(AsyncEvent event) throws IOException {
    event.getAsyncContext().complete();
}
 
源代码30 项目: Tomcat7.0.67   文件: TestAsyncContextImpl.java
@Override
public void onStartAsync(AsyncEvent event) throws IOException {
    TestAsyncContextImpl.track("onStartAsync-");
}
 
 类所在包
 同包方法