false); final NetworkListener listener = httpServer.getListener("grizzly"); listener.setMaxHttpHeaderSize(maxHeaderSize); "http-worker-%d", threadPoolSize); listener.getTransport().setWorkerThreadPool(workerThreadPoolExecutor); listener.getTransport().setSelectorRunnersCount(selectorRunnersCount); listener.setDefaultErrorPageGenerator(errorPageGenerator); final CompressionConfig compressionConfig = listener.getCompressionConfig(); compressionConfig.setCompressionMode(CompressionConfig.CompressionMode.ON); compressionConfig.setCompressionMinSize(512);
if (!response.getRequest().getRequest().getConnection().isOpen()) { LOG.debug("Consumer connection was closed. It will be removed."); return false; response.setStatus(HttpStatus.OK_200); OutputStream out = response.getOutputStream(); mapper.writeValue(out, tasks); response.resume(); } catch (IOException e) { response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR_500); response.resume();
@Override public void markUnderlyingConnectionAsToBeClosed() { content.getHttpHeader().getProcessingState().setKeepAlive(false); }
params.port, params.securePort, params.bindAddress); LOG.info("OTP server base path is {}", params.basePath); HttpServer httpServer = new HttpServer(); NetworkListener httpListener = new NetworkListener("otp_insecure", params.bindAddress, params.port); httpListener.setSecure(false); NetworkListener httpsListener = new NetworkListener("otp_secure", params.bindAddress, params.securePort); httpsListener.setSecure(true); httpsListener.setSSLEngineConfig( new SSLEngineConfigurator(sslConfig) .setClientMode(false) CompressionConfig cc = listener.getCompressionConfig(); cc.setCompressionMode(CompressionConfig.CompressionMode.ON); cc.setCompressionMinSize(50000); // the min number of bytes to compress cc.setCompressableMimeTypes("application/json", "text/json"); // the mime types to compress listener.getTransport().setWorkerThreadPoolConfig(threadPoolConfig); httpServer.addListener(listener); httpServer.getServerConfiguration().addHttpHandler(dynamicHandler, "/otp/"); CLStaticHttpHandler staticHandler = new CLStaticHttpHandler(GrizzlyServer.class.getClassLoader(), "/client/"); if (params.disableFileCache) { LOG.info("Disabling HTTP server static file cache."); staticHandler.setFileCacheEnabled(false); httpServer.getServerConfiguration().addHttpHandler(staticHandler, "/");
response.setContentType("application/json"); String[] pathComponents = request.getPathInfo().split("/"); response.setStatus(HttpStatus.BAD_REQUEST_400); response.setDetailMessage("path should have at least one part"); if (request.getMethod() == Method.HEAD) { mapper.readTree(request.getInputStream()); response.setStatus(HttpStatus.OK_200); return; } else if (request.getMethod() == Method.GET && "status".equals(pathComponents[1])) { response.setStatus(HttpStatus.NOT_FOUND_404); response.setDetailMessage("no job IDs were found"); response.setStatus(HttpStatus.OK_200); OutputStream os = response.getOutputStream(); mapper.writeValue(os, ret); os.close(); } else if (request.getMethod() == Method.POST) { request.getRequest().getConnection() .addCloseListener((closeable, iCloseType) -> { broker.removeSuspendedResponse(graphAffinity, response); }); response.suspend(); // The request should survive after the handler function exits.
@Override public void service(final Request request, final Response response) { final ResponseWriter responseWriter = new ResponseWriter(response, configSetStatusOverSendError); try { logger.debugLog("GrizzlyHttpContainer.service(...) started"); URI baseUri = getBaseUri(request); URI requestUri = getRequestUri(request); final ContainerRequest requestContext = new ContainerRequest(baseUri, requestUri, request.getMethod().getMethodString(), getSecurityContext(request), new GrizzlyRequestPropertiesDelegate(request)); requestContext.setEntityStream(request.getInputStream()); for (final String headerName : request.getHeaderNames()) { requestContext.headers(headerName, request.getHeaders(headerName)); } requestContext.setWriter(responseWriter); requestContext.setRequestScopedInitializer(injectionManager -> { injectionManager.<Ref<Request>>getInstance(RequestTYPE).set(request); injectionManager.<Ref<Response>>getInstance(ResponseTYPE).set(response); }); appHandler.handle(requestContext); } finally { logger.debugLog("GrizzlyHttpContainer.service(...) finished"); } }
boolean isGracefullyFinishResponseOnClose() { final HttpResponsePacket response = responsePacket; return response != null && !response.getProcessingState().isKeepAlive() && !response.isChunked() && response.getContentLength() == -1; }
@Override public boolean isUnderlyingConnectionToBeClosed() { return content.getHttpHeader().getProcessingState().isStayAlive(); }
Buffer getBodyBuffer() { return content.getContent(); }
private void setupKeepAlive(final HttpRequestPacket request, final Connection connection) { request.getProcessingState().setKeepAlive( ConnectionManager.isKeepAlive(connection)); } } // END AsyncHttpClientFiler
static HttpTransactionContext currentTransaction( final HttpHeader httpHeader) { return currentTransaction(httpHeader.getProcessingState().getHttpContext()); }
@Override public int getStatusCode() { return response.getStatus(); }
@Override public boolean isLast() { return content.isLast(); }
@Override public int getProtocolMinorVersion() { return response.getProtocol().getMinorVersion(); }
@Override public int getProtocolMajorVersion() { return response.getProtocol().getMajorVersion(); }
@Override public String getStatusText() { return response.getReasonPhrase(); }
private Charset getCharset(final String charset) { String charsetLocal = charset; if (charsetLocal == null) { charsetLocal = httpResponsePacket.getCharacterEncoding(); } return charsetLocal == null ? Charsets.ASCII_CHARSET : Charsets.lookupCharset(charsetLocal); } }
private boolean isPayloadAllowed(final Method method) { return method.getPayloadExpectation() != Method.PayloadExpectation.NOT_ALLOWED; }
@Override public String getProtocolText() { return response.getProtocolString(); }
@Override public int length() { return content.getContent().remaining(); } }