public static void main(String[] args) throws Exception { System.out.println("Jersey performance test web service application"); final String jaxRsApp = args.length > 0 ? args[0] : null; //noinspection unchecked final ResourceConfig resourceConfig = ResourceConfig .forApplicationClass((Class<? extends Application>) Class.forName(jaxRsApp)); URI baseUri = args.length > 1 ? URI.create(args[1]) : BASE_URI; int selectors = args.length > 2 ? Integer.parseInt(args[2]) : DEFAULT_SELECTORS; int workers = args.length > 3 ? Integer.parseInt(args[3]) : DEFAULT_WORKERS; final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(baseUri, resourceConfig, false); final TCPNIOTransport transport = server.getListener("grizzly").getTransport(); transport.setSelectorRunnersCount(selectors); transport.setWorkerThreadPoolConfig(ThreadPoolConfig.defaultConfig().setCorePoolSize(workers).setMaxPoolSize(workers)); server.start(); System.out.println(String.format("Application started.\nTry out %s\nHit Ctrl-C to stop it...", baseUri)); while (server.isStarted()) { Thread.sleep(600000); } } }
public void run() { int port = config.getProperty("port") != null ? Integer.parseInt(config.getProperty("port")) : DEFAULT_PORT; String addr = config.getProperty("bind-address") != null ? config.getProperty("bind-address") : DEFAULT_BIND_ADDRESS; LOG.info("Starting analyst broker on port {} of interface {}", port, addr); HttpServer httpServer = new HttpServer(); NetworkListener networkListener = new NetworkListener("broker", addr, port); // We avoid blocking IO, and the following line allows us to see closed connections. networkListener.getTransport().setIOStrategy(SameThreadIOStrategy.getInstance()); httpServer.addListener(networkListener); // Bypass Jersey etc. and add a low-level Grizzly handler. // As in servlets, * is needed in base path to identify the "rest" of the path. broker = new Broker(config, addr, port); httpServer.getServerConfiguration().addHttpHandler(new BrokerHttpHandler(broker), "/*"); try { httpServer.start(); LOG.info("Broker running."); broker.run(); // run queue broker task pump in this thread Thread.currentThread().join(); } catch (BindException be) { LOG.error("Cannot bind to port {}. Is it already in use?", port); } catch (IOException ioe) { LOG.error("IO exception while starting server."); } catch (InterruptedException ie) { LOG.info("Interrupted, shutting down."); } httpServer.shutdown(); }
"http-worker-%d", threadPoolSize); listener.getTransport().setWorkerThreadPool(workerThreadPoolExecutor); listener.getTransport().setSelectorRunnersCount(selectorRunnersCount);
listener.getTransport().getWorkerThreadPoolConfig().setThreadFactory(new ThreadFactoryBuilder() .setNameFormat("grizzly-http-server-%d") .setUncaughtExceptionHandler(new JerseyProcessingUncaughtExceptionHandler())
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);
private int maxThreadPoolSize() { Collection<NetworkListener> listeners = this.httpServer.getListeners(); if (listeners.size() == 0) { return -1; } return listeners.iterator().next().getTransport() .getWorkerThreadPoolConfig().getMaxPoolSize(); }
@Override public void setup(NetworkListener networkListener, FilterChainBuilder builder) { final TCPNIOTransport transport = networkListener.getTransport(); if (networkListener.isSecure() && !AlpnSupport.isEnabled()) { LOGGER.warning("TLS ALPN (Application-Layer Protocol Negotiation) support is not available. HTTP/2 support will not be enabled."); return; } final Http2ServerFilter http2Filter = updateFilterChain(builder); if (networkListener.isSecure()) { configureAlpn(transport, http2Filter, builder); } }
@Override public void setup(NetworkListener networkListener, FilterChainBuilder builder) { final TCPNIOTransport transport = networkListener.getTransport(); if (networkListener.isSecure() && !AlpnSupport.isEnabled()) { LOGGER.warning("TLS ALPN (Application-Layer Protocol Negotiation) support is not available. HTTP/2 support will not be enabled."); return; } final Http2ServerFilter http2Filter = updateFilterChain(builder); if (networkListener.isSecure()) { configureAlpn(transport, http2Filter, builder); } }
@Override public void setup(NetworkListener networkListener, FilterChainBuilder builder) { final TCPNIOTransport transport = networkListener.getTransport(); if (networkListener.isSecure() && !AlpnSupport.isEnabled()) { LOGGER.warning("TLS ALPN (Application-Layer Protocol Negotiation) support is not available. HTTP/2 support will not be enabled."); return; } final Http2ServerFilter http2Filter = updateFilterChain(builder); if (networkListener.isSecure()) { configureAlpn(transport, http2Filter, builder); } }
@Override public void setup(NetworkListener networkListener, FilterChainBuilder builder) { final TCPNIOTransport transport = networkListener.getTransport(); if (networkListener.isSecure() && !AlpnSupport.isEnabled()) { LOGGER.warning("TLS ALPN (Application-Layer Protocol Negotiation) support is not available. HTTP/2 support will not be enabled."); return; } final Http2ServerFilter http2Filter = updateFilterChain(builder); if (networkListener.isSecure()) { configureAlpn(transport, http2Filter, builder); } }
@Override public void setup(final NetworkListener networkListener, final FilterChainBuilder builder) { final int tfIdx = builder.indexOfType(TransportFilter.class); builder.add(tfIdx + 1, new PlugFilter(maxBufferSize, networkListener.getTransport().getAttributeBuilder())); }
@Override public void setup(NetworkListener networkListener, FilterChainBuilder builder) { final TCPNIOTransport transport = networkListener.getTransport(); if (networkListener.isSecure() && !AlpnSupport.isEnabled()) { LOGGER.warning("TLS ALPN (Application-Layer Protocol Negotiation) support is not available. HTTP/2 support will not be enabled."); return; } final Http2ServerFilter http2Filter = updateFilterChain(builder); if (networkListener.isSecure()) { configureAlpn(transport, http2Filter, builder); } }
@Override public void setup(NetworkListener networkListener, FilterChainBuilder builder) { final TCPNIOTransport transport = networkListener.getTransport(); if (networkListener.isSecure() && !AlpnSupport.isEnabled()) { LOGGER.warning("TLS ALPN (Application-Layer Protocol Negotiation) support is not available. HTTP/2 support will not be enabled."); return; } final Http2ServerFilter http2Filter = updateFilterChain(builder); if (networkListener.isSecure()) { configureAlpn(transport, http2Filter, builder); } }
@Override public void setup(final NetworkListener networkListener, final FilterChainBuilder builder) { final int tfIdx = builder.indexOfType(TransportFilter.class); builder.add(tfIdx + 1, new PlugFilter(maxBufferSize, networkListener.getTransport().getAttributeBuilder())); }
@Override public void setup(final NetworkListener networkListener, final FilterChainBuilder builder) { final int tfIdx = builder.indexOfType(TransportFilter.class); builder.add(tfIdx + 1, new PlugFilter(maxBufferSize, networkListener.getTransport().getAttributeBuilder())); }
@Override public void setup(final NetworkListener networkListener, final FilterChainBuilder builder) { final int tfIdx = builder.indexOfType(TransportFilter.class); builder.add(tfIdx + 1, new PlugFilter(maxBufferSize, networkListener.getTransport().getAttributeBuilder())); }
@Override public void setup(final NetworkListener networkListener, final FilterChainBuilder builder) { final int tfIdx = builder.indexOfType(TransportFilter.class); builder.add(tfIdx + 1, new PlugFilter(maxBufferSize, networkListener.getTransport().getAttributeBuilder())); }
@Override public void setup(final NetworkListener networkListener, final FilterChainBuilder builder) { final int tfIdx = builder.indexOfType(TransportFilter.class); builder.add(tfIdx + 1, new PlugFilter(maxBufferSize, networkListener.getTransport().getAttributeBuilder())); }
@Override public void setup(final NetworkListener networkListener, final FilterChainBuilder builder) { final int tfIdx = builder.indexOfType(TransportFilter.class); builder.add(tfIdx + 1, new PlugFilter(maxBufferSize, networkListener.getTransport().getAttributeBuilder())); }
@Override public void setup(final NetworkListener networkListener, final FilterChainBuilder builder) { final int tfIdx = builder.indexOfType(TransportFilter.class); builder.add(tfIdx + 1, new PlugFilter(maxBufferSize, networkListener.getTransport().getAttributeBuilder())); }