Java Examples for org.glassfish.grizzly.threadpool.ThreadPoolConfig
The following java examples will help you to understand the usage of org.glassfish.grizzly.threadpool.ThreadPoolConfig. These source code samples are taken from different open source projects.
Example 1
| Project: nfs-rpc-master File: GrizzlyServer.java View source code |
public void start(int listenPort, ExecutorService threadpool) throws Exception {
ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) threadpool;
ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy().setCorePoolSize(threadPoolExecutor.getCorePoolSize()).setMaxPoolSize(threadPoolExecutor.getMaximumPoolSize()).setPoolName("GRIZZLY-SERVER");
ExecutorService executorService = GrizzlyExecutorService.createInstance(config);
FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless();
filterChainBuilder.add(new TransportFilter());
filterChainBuilder.add(new GrizzlyProtocolFilter());
filterChainBuilder.add(new GrizzlyServerHandler(executorService));
TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance();
builder.setOptimizedForMultiplexing(true);
builder.setIOStrategy(SameThreadIOStrategy.getInstance());
transport = builder.build();
transport.setProcessor(filterChainBuilder.build());
transport.bind(listenPort);
transport.start();
LOGGER.warn("server started,listen at: " + listenPort);
}Example 2
| Project: ameba-container-grizzly-master File: GrizzlyContainer.java View source code |
@Override
protected void configureHttpServer() {
final Map<String, Object> properties = getApplication().getProperties();
connectors = Connector.createDefaultConnectors(properties);
if (connectors.size() == 0) {
logger.warn(Messages.get("info.connector.none"));
connectors.add(Connector.createDefault(Maps.newHashMap()));
}
List<NetworkListener> listeners = GrizzlyServerUtil.createListeners(connectors, GrizzlyServerUtil.createCompressionConfig("http", properties));
webSocketEnabled = !"false".equals(properties.get(WebSocketAddon.WEB_SOCKET_ENABLED_CONF));
final String contextPath = StringUtils.defaultIfBlank((String) properties.get(WEB_SOCKET_CONTEXT_PATH), "/");
if (webSocketEnabled) {
GrizzlyServerUtil.bindWebSocket(contextPath, this, listeners);
}
String charset = StringUtils.defaultIfBlank((String) properties.get("app.encoding"), "utf-8");
System.setProperty(Constants.class.getName() + ".default-character-encoding", charset);
httpServer = new HttpServer() {
@Override
public synchronized void start() throws IOException {
if (webSocketServerContainer != null)
try {
webSocketServerContainer.start(contextPath, -1);
} catch (DeploymentException e) {
logger.error("启动websocket容器失败", e);
}
super.start();
}
@Override
public synchronized GrizzlyFuture<HttpServer> shutdown(long gracePeriod, TimeUnit timeUnit) {
if (webSocketServerContainer != null)
webSocketServerContainer.stop();
return super.shutdown(gracePeriod, timeUnit);
}
@Override
public synchronized void shutdownNow() {
if (webSocketServerContainer != null)
webSocketServerContainer.stop();
super.shutdownNow();
}
};
httpServer.getServerConfiguration().setJmxEnabled(getApplication().isJmxEnabled());
ThreadPoolConfig workerThreadPoolConfig = null;
String workerThreadPoolConfigClass = Utils.getProperty(properties, WORKER_THREAD_POOL_CONFIG, String.class);
if (StringUtils.isNotBlank(workerThreadPoolConfigClass)) {
workerThreadPoolConfig = ClassUtils.newInstance(workerThreadPoolConfigClass);
}
ThreadPoolConfig selectorThreadPoolConfig = null;
String selectorThreadPoolConfigClass = Utils.getProperty(properties, SELECTOR_THREAD_POOL_CONFIG, String.class);
if (StringUtils.isNotBlank(selectorThreadPoolConfigClass)) {
selectorThreadPoolConfig = ClassUtils.newInstance(selectorThreadPoolConfigClass);
}
TCPNIOTransportBuilder transportBuilder = null;
if (workerThreadPoolConfig != null || selectorThreadPoolConfig != null) {
transportBuilder = TCPNIOTransportBuilder.newInstance();
if (workerThreadPoolConfig != null) {
transportBuilder.setWorkerThreadPoolConfig(workerThreadPoolConfig);
}
if (selectorThreadPoolConfig != null) {
transportBuilder.setSelectorThreadPoolConfig(selectorThreadPoolConfig);
}
}
Integer selectorSize = Utils.getProperty(properties, SELECTOR_THREAD_POOL_SIZE, Integer.class);
Integer workerCoreSize = Utils.getProperty(properties, WORKER_THREAD_POOL_CORE_SIZE, Integer.class);
Integer workerMaxSize = Utils.getProperty(properties, WORKER_THREAD_POOL_MAX_SIZE, Integer.class);
for (NetworkListener listener : listeners) {
if (transportBuilder != null) {
listener.setTransport(transportBuilder.build());
}
if (workerThreadPoolConfig == null) {
TCPNIOTransport transport = listener.getTransport();
workerThreadPoolConfig = transport.getWorkerThreadPoolConfig();
boolean change = false;
if (workerCoreSize != null && workerCoreSize > 0) {
workerThreadPoolConfig.setCorePoolSize(workerCoreSize);
change = true;
}
if (workerMaxSize != null && workerMaxSize > 0) {
workerThreadPoolConfig.setMaxPoolSize(workerMaxSize);
change = true;
}
if (change) {
transport.setWorkerThreadPoolConfig(workerThreadPoolConfig);
}
}
if (selectorThreadPoolConfig == null && selectorSize != null && selectorSize > 0) {
listener.getTransport().setSelectorRunnersCount(selectorSize);
}
httpServer.addListener(listener);
}
final ServerConfiguration config = httpServer.getServerConfiguration();
config.setPassTraceRequest(true);
config.setHttpServerName(getApplication().getApplicationName());
String version = getApplication().getApplicationVersion().toString();
config.setHttpServerVersion(config.getHttpServerName().equals(Application.DEFAULT_APP_NAME) ? Ameba.getVersion() : version);
config.setName("Ameba-HttpServer-" + getApplication().getApplicationName());
}Example 3
| Project: tyrus-master File: GrizzlyClientSocket.java View source code |
private ThreadPoolConfig getWorkerThreadPoolConfig(Map<String, Object> properties) { if (properties.containsKey(GrizzlyClientProperties.WORKER_THREAD_POOL_CONFIG)) { return Utils.getProperty(properties, GrizzlyClientProperties.WORKER_THREAD_POOL_CONFIG, ThreadPoolConfig.class); } else if (properties.containsKey(ClientProperties.WORKER_THREAD_POOL_CONFIG)) { Object threadPoolConfig = Utils.getProperty(properties, ClientProperties.WORKER_THREAD_POOL_CONFIG, Object.class); if (threadPoolConfig instanceof org.glassfish.tyrus.client.ThreadPoolConfig) { org.glassfish.tyrus.client.ThreadPoolConfig clientThreadPoolConfig = (org.glassfish.tyrus.client.ThreadPoolConfig) threadPoolConfig; ThreadPoolConfig grizzlyThreadPoolConfig = ThreadPoolConfig.defaultConfig(); grizzlyThreadPoolConfig.setMaxPoolSize(clientThreadPoolConfig.getMaxPoolSize()).setCorePoolSize(clientThreadPoolConfig.getCorePoolSize()).setPriority(clientThreadPoolConfig.getPriority()).setDaemon(clientThreadPoolConfig.isDaemon()).setKeepAliveTime(clientThreadPoolConfig.getKeepAliveTime(TimeUnit.MILLISECONDS), TimeUnit.MILLISECONDS).setInitialClassLoader(clientThreadPoolConfig.getInitialClassLoader()).setPoolName(clientThreadPoolConfig.getPoolName()).setQueue(clientThreadPoolConfig.getQueue()).setQueueLimit(clientThreadPoolConfig.getQueueLimit()).setThreadFactory(clientThreadPoolConfig.getThreadFactory()); return grizzlyThreadPoolConfig; } else if (threadPoolConfig instanceof ThreadPoolConfig) { return (ThreadPoolConfig) threadPoolConfig; } else { LOGGER.log(Level.CONFIG, String.format("Invalid type of configuration property of %s (%s), %s cannot be cast to %s or %s", ClientProperties.WORKER_THREAD_POOL_CONFIG, threadPoolConfig.toString(), threadPoolConfig.getClass().toString(), ThreadPoolConfig.class.toString(), org.glassfish.tyrus.client.ThreadPoolConfig.class.toString())); } } return null; }
Example 4
| Project: Empower-master File: GrizzlyServer.java View source code |
@Override
protected void doOpen() throws Throwable {
FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless();
filterChainBuilder.add(new TransportFilter());
filterChainBuilder.add(new GrizzlyCodecAdapter(getCodec(), getUrl(), this));
filterChainBuilder.add(new GrizzlyHandler(getUrl(), this));
TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance();
ThreadPoolConfig config = builder.getWorkerThreadPoolConfig();
config.setPoolName(SERVER_THREAD_POOL_NAME).setQueueLimit(-1);
String threadpool = getUrl().getParameter(Constants.THREADPOOL_KEY, Constants.DEFAULT_THREADPOOL);
if (Constants.DEFAULT_THREADPOOL.equals(threadpool)) {
int threads = getUrl().getPositiveParameter(Constants.THREADS_KEY, Constants.DEFAULT_THREADS);
config.setCorePoolSize(threads).setMaxPoolSize(threads).setKeepAliveTime(0L, TimeUnit.SECONDS);
} else if ("cached".equals(threadpool)) {
int threads = getUrl().getPositiveParameter(Constants.THREADS_KEY, Integer.MAX_VALUE);
config.setCorePoolSize(0).setMaxPoolSize(threads).setKeepAliveTime(60L, TimeUnit.SECONDS);
} else {
throw new IllegalArgumentException("Unsupported threadpool type " + threadpool);
}
builder.setKeepAlive(true).setReuseAddress(false).setIOStrategy(SameThreadIOStrategy.getInstance());
transport = builder.build();
transport.setProcessor(filterChainBuilder.build());
transport.bind(getBindAddress());
transport.start();
}Example 5
| Project: SE252-JAN2015-master File: ServerLauncher.java View source code |
/**
* Starts Grizzly HTTP server exposing JAX-RS resources defined in this application.
* @return Grizzly HTTP server.
*/
private static HttpServer startServer(String baseUri) throws IOException {
final ResourceConfig rc = new ResourceConfig().packages("se252.jan15.calvinandhobbes.project0");
System.out.println("Trying to starting service at: " + baseUri);
HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(URI.create(baseUri), rc, false);
TCPNIOTransport transport = getListener(httpServer).getTransport();
ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().setPoolName("worker-thread-").setCorePoolSize(20).setMaxPoolSize(20).setQueueLimit(-1);
transport.configureBlocking(false);
transport.setSelectorRunnersCount(3);
transport.setWorkerThreadPoolConfig(config);
transport.setIOStrategy(WorkerThreadIOStrategy.getInstance());
transport.setTcpNoDelay(true);
httpServer.start();
System.out.println("Blocking Transport(T/F): " + transport.isBlocking());
System.out.println("Num SelectorRunners: " + transport.getSelectorRunnersCount());
System.out.println("Num WorkerThreads: " + transport.getWorkerThreadPoolConfig().getCorePoolSize());
return httpServer;
}Example 6
| Project: rexster-master File: HttpRexsterServer.java View source code |
private void configureNetworkListener() throws Exception {
boolean allowPortChange = true;
NetworkListener listener = this.httpServer.getListener("grizzly");
if (listener == null) {
listener = new NetworkListener("grizzly", rexsterServerHost, rexsterServerPort);
this.httpServer.addListener(listener);
allowPortChange = false;
}
if (allowPortChange && hasPortHostChanged()) {
listener.getTransport().unbindAll();
listener.getTransport().bind(rexsterServerHost, rexsterServerPort);
logger.info(String.format("RexPro Server bound to [%s:%s]", rexsterServerHost, rexsterServerPort));
}
if (hasThreadPoolSizeChanged()) {
final ThreadPoolConfig workerThreadPoolConfig = ThreadPoolConfig.defaultConfig().setCorePoolSize(coreWorkerThreadPoolSize).setMaxPoolSize(maxWorkerThreadPoolSize);
listener.getTransport().setWorkerThreadPoolConfig(workerThreadPoolConfig);
final ThreadPoolConfig kernalThreadPoolConfig = ThreadPoolConfig.defaultConfig().setCorePoolSize(coreKernalThreadPoolSize).setMaxPoolSize(maxKernalThreadPoolSize);
listener.getTransport().setKernelThreadPoolConfig(kernalThreadPoolConfig);
if (listener.getTransport().getKernelThreadPool() != null) {
((GrizzlyExecutorService) listener.getTransport().getKernelThreadPool()).reconfigure(kernalThreadPoolConfig);
}
if (listener.getTransport().getWorkerThreadPool() != null) {
((GrizzlyExecutorService) listener.getTransport().getWorkerThreadPool()).reconfigure(workerThreadPoolConfig);
}
logger.info(String.format("HTTP/REST thread pool configuration: kernal[%s / %s] worker[%s / %s] ", coreKernalThreadPoolSize, maxKernalThreadPoolSize, coreWorkerThreadPoolSize, maxWorkerThreadPoolSize));
}
listener.setMaxPostSize(maxPostSize);
listener.setMaxHttpHeaderSize(maxHeaderSize);
listener.setUploadTimeout(uploadTimeoutMillis);
listener.setDisableUploadTimeout(false);
if (this.hasIoStrategyChanged()) {
final IOStrategy strategy = GrizzlyIoStrategyFactory.createIoStrategy(this.ioStrategy);
listener.getTransport().setIOStrategy(strategy);
logger.info(String.format("Using %s IOStrategy for HTTP/REST.", strategy.getClass().getName()));
}
}Example 7
| Project: oncrpc4j-master File: OncRpcSvcBuilder.java View source code |
public ExecutorService getWorkerThreadExecutorService() {
if (_ioStrategy == IoStrategy.SAME_THREAD) {
return MoreExecutors.newDirectExecutorService();
}
if (_workerThreadExecutionService != null) {
return _workerThreadExecutionService;
}
ThreadPoolConfig workerPoolConfig = getWorkerPoolCfg(_ioStrategy, _serviceName, _workerThreadPoolSize);
return new FixedThreadPool(workerPoolConfig);
}Example 8
| Project: jersey-master File: JerseyGrizzlyRunner.java View source code |
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);
}
}Example 9
| Project: anythingworks-master File: GrizzlyWebServer.java View source code |
/**
* See https://grizzly.java.net/coreconfig.html
* See https://grizzly.java.net/bestpractices.html
*/
private void configureWorkerThreads(@NotNull NetworkListener networkListener) {
//WorkerThreadIOStrategy is the default anyway.
//networkListener.getTransport().setIOStrategy(WorkerThreadIOStrategy.getInstance());
//makes a copy
ThreadPoolConfig config = ThreadPoolConfig.defaultConfig();
int numThreads = Runtime.getRuntime().availableProcessors() * 2;
//setting core and max to the same number is important!
config.setCorePoolSize(numThreads);
config.setMaxPoolSize(numThreads);
//a queue limit is optional but recommended
config.setQueueLimit(1000);
networkListener.getTransport().setWorkerThreadPoolConfig(config);
}Example 10
| Project: stem-master File: ClusterManagerDaemon.java View source code |
private ThreadPoolConfig adjustThreadPool() { Integer corePoolSize = 2; Integer maxPoolSize = 8; ThreadPoolConfig workerPoolConfig = ThreadPoolConfig.defaultConfig(); workerPoolConfig.setCorePoolSize(corePoolSize); workerPoolConfig.setMaxPoolSize(maxPoolSize); workerPoolConfig.setPoolName("Worker"); return workerPoolConfig; }
Example 11
| Project: milton-master File: GrizzlyLoadBalancer.java View source code |
public boolean start(int httpPort, Integer sslPort) throws IOException {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
ConfigurableApplicationContext ctx = initSpringApplicationContext();
if (ctx == null) {
log.warn("Failed to initialise spring");
return false;
}
complexAppExecutorService = GrizzlyExecutorService.createInstance(ThreadPoolConfig.defaultConfig().copy().setCorePoolSize(5).setMaxPoolSize(5));
String host = getPropertyOrDefault("host", null);
int port = getPropertyOrDefaultInt("port", 8080);
int secureHttpPort = getPropertyOrDefaultInt(MiltonSNIService.SYS_SECURE_PORT, MiltonSNIService.SECURE_PORT);
if (host == null) {
httpServer = HttpServer.createSimpleServer(null, port);
} else {
httpServer = HttpServer.createSimpleServer(null, host, port);
}
// Start the Kademi SNI SSL service
{
// TODO: allow injection
MiltonSNICertificateStore store = null;
MiltonSNICertificateManager sniCerManager = new MiltonSNICertificateManager(store);
SSLEngineConfigurator sniConfig = sniCerManager.createEngineConfigurator();
this.kademiSNIService = new MiltonSNIService(secureHttpPort, sniConfig);
this.kademiSNIService.startOn(httpServer);
}
httpServer.getServerConfiguration().addHttpHandler(new HttpHandler() {
@Override
public void service(final Request request, final Response response) throws Exception {
log.trace("service");
response.suspend();
complexAppExecutorService.execute(new Runnable() {
@Override
public void run() {
try {
forwardToCluster(request, response);
} finally {
response.resume();
}
}
});
}
}, "/");
httpServer.start();
running = true;
return true;
}Example 12
| Project: Payara-master File: GenericGrizzlyListener.java View source code |
protected void configureTransport(final NetworkListener networkListener, final Transport transportConfig, final FilterChainBuilder filterChainBuilder) {
final String transportClassName = transportConfig.getClassname();
if (TCPNIOTransport.class.getName().equals(transportClassName)) {
transport = configureTCPTransport(transportConfig);
} else if (UDPNIOTransport.class.getName().equals(transportClassName)) {
transport = configureUDPTransport();
} else {
throw new GrizzlyConfigException("Unsupported transport type " + transportConfig.getName());
}
String selectorName = transportConfig.getSelectionKeyHandler();
if (selectorName != null) {
if (getSelectionKeyHandlerByName(selectorName, transportConfig) != null) {
if (LOGGER.isLoggable(Level.INFO)) {
LOGGER.warning("Element, selection-key-handler, has been deprecated and is effectively ignored by the runtime.");
}
}
}
if (!Transport.BYTE_BUFFER_TYPE.equalsIgnoreCase(transportConfig.getByteBufferType())) {
transport.setMemoryManager(new ByteBufferManager(true, AbstractMemoryManager.DEFAULT_MAX_BUFFER_SIZE, ByteBufferManager.DEFAULT_SMALL_BUFFER_SIZE));
}
final int acceptorThreads = Integer.parseInt(transportConfig.getAcceptorThreads());
transport.setSelectorRunnersCount(acceptorThreads);
final int readSize = Integer.parseInt(transportConfig.getSocketReadBufferSize());
if (readSize > 0) {
transport.setReadBufferSize(readSize);
}
final int writeSize = Integer.parseInt(transportConfig.getSocketWriteBufferSize());
if (writeSize > 0) {
transport.setWriteBufferSize(writeSize);
}
final ThreadPoolConfig kernelThreadPoolConfig = transport.getKernelThreadPoolConfig();
kernelThreadPoolConfig.setPoolName(networkListener.getName() + "-kernel");
if (acceptorThreads > 0) {
kernelThreadPoolConfig.setCorePoolSize(acceptorThreads).setMaxPoolSize(acceptorThreads);
}
transport.setIOStrategy(loadIOStrategy(transportConfig.getIoStrategy()));
transport.setNIOChannelDistributor(new RoundRobinConnectionDistributor(transport, Boolean.parseBoolean(transportConfig.getDedicatedAcceptorEnabled())));
filterChainBuilder.add(new TransportFilter());
}Example 13
| Project: riak-async-java-client-master File: RiakAsyncClient.java View source code |
private void start() {
FilterChainBuilder clientChainBuilder = FilterChainBuilder.stateless();
clientChainBuilder.add(new TransportFilter());
clientChainBuilder.add(new RpbFilter(heap));
clientChainBuilder.add(new PendingRequestFilter());
filterChain = clientChainBuilder.build();
transport.setKeepAlive(true);
transport.setTcpNoDelay(true);
ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().setPoolName("riak-async-client").setCorePoolSize(PROCESSORS).setMaxPoolSize(PROCESSORS).setKeepAliveTime(timeout, TimeUnit.SECONDS);
transport.setWorkerThreadPoolConfig(config);
transport.setIOStrategy(WorkerThreadIOStrategy.getInstance());
transport.setProcessor(filterChain);
try {
transport.start();
connection = getConnection();
} catch (IOException e) {
errorHandler.handleError(e);
} catch (InterruptedException e) {
errorHandler.handleError(e);
} catch (ExecutionException e) {
errorHandler.handleError(e);
} catch (TimeoutException e) {
errorHandler.handleError(e);
}
}Example 14
| Project: user-master File: Server.java View source code |
private void setThreadSize() {
int threadSize = getThreadSizeFromSystemProperties();
java.util.Collection<org.glassfish.grizzly.http.server.NetworkListener> listeners = httpServer.getListeners();
for (org.glassfish.grizzly.http.server.NetworkListener listener : listeners) {
listener.getTransport().getKernelThreadPoolConfig();
org.glassfish.grizzly.nio.transport.TCPNIOTransportBuilder builder = org.glassfish.grizzly.nio.transport.TCPNIOTransportBuilder.newInstance();
org.glassfish.grizzly.threadpool.ThreadPoolConfig config = builder.getWorkerThreadPoolConfig();
config.setCorePoolSize(threadSize);
config.setMaxPoolSize(threadSize);
org.glassfish.grizzly.nio.transport.TCPNIOTransport transport = builder.build();
listener.setTransport(transport);
}
logger.info("thread size set as {}", threadSize);
}Example 15
| Project: glassfish-master File: GenericGrizzlyListener.java View source code |
protected void configureTransport(final NetworkListener networkListener, final Transport transportConfig, final FilterChainBuilder filterChainBuilder) {
final String transportClassName = transportConfig.getClassname();
if (TCPNIOTransport.class.getName().equals(transportClassName)) {
transport = configureTCPTransport(transportConfig);
} else if (UDPNIOTransport.class.getName().equals(transportClassName)) {
transport = configureUDPTransport();
} else {
throw new GrizzlyConfigException("Unsupported transport type " + transportConfig.getName());
}
String selectorName = transportConfig.getSelectionKeyHandler();
if (selectorName != null) {
if (getSelectionKeyHandlerByName(selectorName, transportConfig) != null) {
if (LOGGER.isLoggable(Level.INFO)) {
LOGGER.warning("Element, selection-key-handler, has been deprecated and is effectively ignored by the runtime.");
}
}
}
if (!Transport.BYTE_BUFFER_TYPE.equalsIgnoreCase(transportConfig.getByteBufferType())) {
transport.setMemoryManager(new ByteBufferManager(true, AbstractMemoryManager.DEFAULT_MAX_BUFFER_SIZE, ByteBufferManager.DEFAULT_SMALL_BUFFER_SIZE));
}
final int acceptorThreads = Integer.parseInt(transportConfig.getAcceptorThreads());
transport.setSelectorRunnersCount(acceptorThreads);
final int readSize = Integer.parseInt(transportConfig.getSocketReadBufferSize());
if (readSize > 0) {
transport.setReadBufferSize(readSize);
}
final int writeSize = Integer.parseInt(transportConfig.getSocketWriteBufferSize());
if (writeSize > 0) {
transport.setWriteBufferSize(writeSize);
}
final ThreadPoolConfig kernelThreadPoolConfig = transport.getKernelThreadPoolConfig();
kernelThreadPoolConfig.setPoolName(networkListener.getName() + "-kernel");
if (acceptorThreads > 0) {
kernelThreadPoolConfig.setCorePoolSize(acceptorThreads).setMaxPoolSize(acceptorThreads);
}
transport.setIOStrategy(loadIOStrategy(transportConfig.getIoStrategy()));
transport.setNIOChannelDistributor(new RoundRobinConnectionDistributor(transport, Boolean.parseBoolean(transportConfig.getDedicatedAcceptorEnabled())));
filterChainBuilder.add(new TransportFilter());
}Example 16
| Project: dubbo-master File: GrizzlyServer.java View source code |
@Override
protected void doOpen() throws Throwable {
FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless();
filterChainBuilder.add(new TransportFilter());
filterChainBuilder.add(new GrizzlyCodecAdapter(getCodec(), getUrl(), this));
filterChainBuilder.add(new GrizzlyHandler(getUrl(), this));
TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance();
ThreadPoolConfig config = builder.getWorkerThreadPoolConfig();
config.setPoolName(SERVER_THREAD_POOL_NAME).setQueueLimit(-1);
String threadpool = getUrl().getParameter(Constants.THREADPOOL_KEY, Constants.DEFAULT_THREADPOOL);
if (Constants.DEFAULT_THREADPOOL.equals(threadpool)) {
int threads = getUrl().getPositiveParameter(Constants.THREADS_KEY, Constants.DEFAULT_THREADS);
config.setCorePoolSize(threads).setMaxPoolSize(threads).setKeepAliveTime(0L, TimeUnit.SECONDS);
} else if ("cached".equals(threadpool)) {
int threads = getUrl().getPositiveParameter(Constants.THREADS_KEY, Integer.MAX_VALUE);
config.setCorePoolSize(0).setMaxPoolSize(threads).setKeepAliveTime(60L, TimeUnit.SECONDS);
} else {
throw new IllegalArgumentException("Unsupported threadpool type " + threadpool);
}
builder.setKeepAlive(true).setReuseAddress(false).setIOStrategy(SameThreadIOStrategy.getInstance());
transport = builder.build();
transport.setProcessor(filterChainBuilder.build());
transport.bind(getBindAddress());
transport.start();
}Example 17
| Project: cta-otp-master File: GrizzlyServer.java View source code |
public void start(String[] args) {
/* CONFIGURE LOGGING */
// Remove existing handlers attached to the j.u.l root logger
// (since SLF4J 1.6.5)
SLF4JBridgeHandler.removeHandlersForRootLogger();
// Bridge j.u.l (used by Jersey) to the SLF4J root logger
SLF4JBridgeHandler.install();
/* CONFIGURE GRIZZLY SERVER */
LOG.info("Starting OTP Grizzly server...");
if (args.length > 2)
port = Integer.parseInt(args[2]);
// Rather than use Jersey's GrizzlyServerFactory we will construct one manually, so we can
// set the number of threads, etc.
HttpServer httpServer = new HttpServer();
NetworkListener networkListener = new NetworkListener("sample-listener", "localhost", port);
ThreadPoolConfig threadPoolConfig = ThreadPoolConfig.defaultConfig().setCorePoolSize(1).setMaxPoolSize(Runtime.getRuntime().availableProcessors());
networkListener.getTransport().setWorkerThreadPoolConfig(threadPoolConfig);
httpServer.addListener(networkListener);
ResourceConfig rc = new PackagesResourceConfig("org.opentripplanner");
// DelegatingFilterProxy.class.getName() does not seem to work out of the box.
// Register a custom authentication filter, a filter that removes the /ws/ from OTP
// REST API calls, and a filter that wraps JSON in method calls as needed.
rc.getProperties().put(ResourceConfig.PROPERTY_CONTAINER_REQUEST_FILTERS, new String[] { AuthFilter.class.getName(), RewriteFilter.class.getName() });
rc.getProperties().put(ResourceConfig.PROPERTY_CONTAINER_RESPONSE_FILTERS, new String[] { JsonpFilter.class.getName() });
// Make a factory that hands Jersey OTP modules to inject
IoCComponentProviderFactory ioc_factory = OTPConfigurator.fromCommandLineArguments(args);
/* ADD A COUPLE OF HANDLERS (~SERVLETS) */
// 1. A Grizzly wrapper around the Jersey WebApplication.
// We cannot set the context path to /opentripplanner-api-webapp/ws
// https://java.net/jira/browse/GRIZZLY-1481?focusedCommentId=360385&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_360385
HttpHandler handler = ContainerFactory.createContainer(HttpHandler.class, rc, ioc_factory);
httpServer.getServerConfiguration().addHttpHandler(handler, "/opentripplanner-api-webapp/");
// 2. A static content server for the client JS apps etc.
// This is a filesystem path, not classpath.
// Files are relative to the project dir, so
// from ./ we can reach e.g. target/classes/data-sources.xml
staticContentDirectory = "../opentripplanner-leaflet-client/src/main/webapp/";
httpServer.getServerConfiguration().addHttpHandler(new StaticHttpHandler(staticContentDirectory), "/");
/* RELINQUISH CONTROL TO THE SERVER THREAD */
try {
httpServer.start();
LOG.info("Grizzly server running.");
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) {
httpServer.stop();
}
}Example 18
| Project: magnificent-mileage-master File: GrizzlyServer.java View source code |
public void run() {
/* Rather than use Jersey's GrizzlyServerFactory we will construct one manually, so we can
set the number of threads, etc. */
LOG.info("Starting OTP Grizzly server on port {} using graphs at {}", params.port, params.graphDirectory);
HttpServer httpServer = new HttpServer();
NetworkListener networkListener = new NetworkListener("otp_listener", "localhost", params.port);
ThreadPoolConfig threadPoolConfig = ThreadPoolConfig.defaultConfig().setCorePoolSize(1).setMaxPoolSize(Runtime.getRuntime().availableProcessors());
networkListener.getTransport().setWorkerThreadPoolConfig(threadPoolConfig);
httpServer.addListener(networkListener);
ResourceConfig rc = new PackagesResourceConfig("org.opentripplanner");
/* DelegatingFilterProxy.class.getName() does not seem to work out of the box.
Register a custom authentication filter, a filter that removes the /ws/ from OTP
REST API calls, and a filter that wraps JSON in method calls as needed. */
rc.getProperties().put(ResourceConfig.PROPERTY_CONTAINER_REQUEST_FILTERS, new String[] { AuthFilter.class.getName(), RewriteFilter.class.getName() });
rc.getProperties().put(ResourceConfig.PROPERTY_CONTAINER_RESPONSE_FILTERS, new String[] { JsonpFilter.class.getName() });
/* ADD A COUPLE OF HANDLERS (~= SERVLETS) */
/* 1. A Grizzly wrapper around the Jersey WebApplication.
We cannot set the context path to /opentripplanner-api-webapp/ws
https://java.net/jira/browse/GRIZZLY-1481?focusedCommentId=360385&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_360385 */
HttpHandler handler = ContainerFactory.createContainer(HttpHandler.class, rc, iocFactory);
httpServer.getServerConfiguration().addHttpHandler(handler, "/opentripplanner-api-webapp/");
/* 2. A static content server for the client JS apps etc.
This is a filesystem path, not classpath. Files are relative to the project dir, so
from ./ we can reach e.g. target/classes/data-sources.xml */
HttpHandler staticHandler = makeClientStaticHandler();
httpServer.getServerConfiguration().addHttpHandler(staticHandler, "/");
/* RELINQUISH CONTROL TO THE SERVER THREAD */
try {
httpServer.start();
LOG.info("Grizzly server running.");
Thread.currentThread().join();
} catch (BindException be) {
LOG.error("Cannot bind to port {}. Is it already in use?", params.port);
} catch (IOException ioe) {
LOG.error("IO exception while starting server.");
} catch (InterruptedException ie) {
LOG.info("Interrupted, shutting down.");
httpServer.stop();
}
}Example 19
| Project: OpenTripPlanner-master File: GrizzlyServer.java View source code |
/**
* This function goes through roughly the same steps as Jersey's GrizzlyServerFactory, but we instead construct
* an HttpServer and NetworkListener manually so we can set the number of threads and other details.
*/
public void run() {
LOG.info("Starting OTP Grizzly server on ports {} (HTTP) and {} (HTTPS) of interface {}", params.port, params.securePort, params.bindAddress);
LOG.info("OTP server base path is {}", params.basePath);
HttpServer httpServer = new HttpServer();
/* Configure SSL */
SSLContextConfigurator sslConfig = new SSLContextConfigurator();
sslConfig.setKeyStoreFile(new File(params.basePath, "keystore").getAbsolutePath());
sslConfig.setKeyStorePass("opentrip");
/* OTP is CPU-bound, so we want only as many worker threads as we have cores. */
ThreadPoolConfig threadPoolConfig = ThreadPoolConfig.defaultConfig().setCorePoolSize(1).setMaxPoolSize(Runtime.getRuntime().availableProcessors());
/* HTTP (non-encrypted) listener */
NetworkListener httpListener = new NetworkListener("otp_insecure", params.bindAddress, params.port);
// OTP is CPU-bound, we don't want more threads than cores. TODO: We should switch to async handling.
httpListener.setSecure(false);
/* HTTPS listener */
NetworkListener httpsListener = new NetworkListener("otp_secure", params.bindAddress, params.securePort);
// Ideally we'd share the threads between HTTP and HTTPS.
httpsListener.setSecure(true);
httpsListener.setSSLEngineConfig(new SSLEngineConfigurator(sslConfig).setClientMode(false).setNeedClientAuth(false));
// For both HTTP and HTTPS listeners: enable gzip compression, set thread pool, add listener to httpServer.
for (NetworkListener listener : new NetworkListener[] { httpListener, httpsListener }) {
CompressionConfig cc = listener.getCompressionConfig();
cc.setCompressionMode(CompressionConfig.CompressionMode.ON);
// the min number of bytes to compress
cc.setCompressionMinSize(50000);
// the mime types to compress
cc.setCompressableMimeTypes("application/json", "text/json");
listener.getTransport().setWorkerThreadPoolConfig(threadPoolConfig);
httpServer.addListener(listener);
}
/* Add a few handlers (~= servlets) to the Grizzly server. */
/* 1. A Grizzly wrapper around the Jersey Application. */
Application app = new OTPApplication(server, !params.insecure);
HttpHandler dynamicHandler = ContainerFactory.createContainer(HttpHandler.class, app);
httpServer.getServerConfiguration().addHttpHandler(dynamicHandler, "/otp/");
/* 2. A static content handler to serve the client JS apps etc. from the classpath. */
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, "/");
/*
* 3. A static content handler to serve local files from the filesystem, under the "local"
* path.
*/
if (params.clientDirectory != null) {
StaticHttpHandler localHandler = new StaticHttpHandler(params.clientDirectory.getAbsolutePath());
localHandler.setFileCacheEnabled(false);
httpServer.getServerConfiguration().addHttpHandler(localHandler, "/local");
}
/* 3. Test alternate method (no Jersey). */
// As in servlets, * is needed in base path to identify the "rest" of the path.
// GraphService gs = (GraphService) iocFactory.getComponentProvider(GraphService.class).getInstance();
// Graph graph = gs.getGraph();
// httpServer.getServerConfiguration().addHttpHandler(new OTPHttpHandler(graph), "/test/*");
// Add shutdown hook to gracefully shut down Grizzly.
// Signal handling (sun.misc.Signal) is potentially not available on all JVMs.
Thread shutdownThread = new Thread(httpServer::shutdown);
Runtime.getRuntime().addShutdownHook(shutdownThread);
/* RELINQUISH CONTROL TO THE SERVER THREAD */
try {
httpServer.start();
LOG.info("Grizzly server running.");
Thread.currentThread().join();
} catch (BindException be) {
LOG.error("Cannot bind to port {}. Is it already in use?", params.port);
} catch (IOException ioe) {
LOG.error("IO exception while starting server.");
} catch (InterruptedException ie) {
LOG.info("Interrupted, shutting down.");
}
// Clean up graceful shutdown hook before shutting down Grizzly.
Runtime.getRuntime().removeShutdownHook(shutdownThread);
httpServer.shutdown();
}Example 20
| Project: milton2-master File: GrizzlyLoadBalancer.java View source code |
public boolean start(int httpPort, Integer sslPort) throws IOException {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
ConfigurableApplicationContext ctx = initSpringApplicationContext();
if (ctx == null) {
log.warn("Failed to initialise spring");
return false;
}
complexAppExecutorService = GrizzlyExecutorService.createInstance(ThreadPoolConfig.defaultConfig().copy().setCorePoolSize(5).setMaxPoolSize(5));
String host = getPropertyOrDefault("host", null);
int port = getPropertyOrDefaultInt("port", 8080);
int secureHttpPort = getPropertyOrDefaultInt(MiltonSNIService.SYS_SECURE_PORT, MiltonSNIService.SECURE_PORT);
if (host == null) {
httpServer = HttpServer.createSimpleServer(null, port);
} else {
httpServer = HttpServer.createSimpleServer(null, host, port);
}
// Start the Kademi SNI SSL service
{
// TODO: allow injection
MiltonSNICertificateStore store = null;
MiltonSNICertificateManager sniCerManager = new MiltonSNICertificateManager(store);
SSLEngineConfigurator sniConfig = sniCerManager.createEngineConfigurator();
this.kademiSNIService = new MiltonSNIService(secureHttpPort, sniConfig);
this.kademiSNIService.startOn(httpServer);
}
httpServer.getServerConfiguration().addHttpHandler(new HttpHandler() {
@Override
public void service(final Request request, final Response response) throws Exception {
log.trace("service");
response.suspend();
complexAppExecutorService.execute(new Runnable() {
@Override
public void run() {
try {
forwardToCluster(request, response);
} finally {
response.resume();
}
}
});
}
}, "/");
httpServer.start();
running = true;
return true;
}Example 21
| Project: Planner-master File: GrizzlyServer.java View source code |
/**
* This function goes through roughly the same steps as Jersey's GrizzlyServerFactory, but we instead construct
* an HttpServer and NetworkListener manually so we can set the number of threads and other details.
*/
public void run() {
LOG.info("Starting OTP Grizzly server on ports {} (HTTP) and {} (HTTPS) of interface {}", params.port, params.securePort, params.bindAddress);
LOG.info("OTP server base path is {}", params.basePath);
HttpServer httpServer = new HttpServer();
/* Configure SSL */
SSLContextConfigurator sslConfig = new SSLContextConfigurator();
sslConfig.setKeyStoreFile(new File(params.basePath, "keystore").getAbsolutePath());
sslConfig.setKeyStorePass("opentrip");
/* OTP is CPU-bound, so we want only as many worker threads as we have cores. */
ThreadPoolConfig threadPoolConfig = ThreadPoolConfig.defaultConfig().setCorePoolSize(1).setMaxPoolSize(Runtime.getRuntime().availableProcessors());
/* HTTP (non-encrypted) listener */
NetworkListener httpListener = new NetworkListener("otp_insecure", params.bindAddress, params.port);
// OTP is CPU-bound, we don't want more threads than cores. TODO: We should switch to async handling.
httpListener.setSecure(false);
/* HTTPS listener */
NetworkListener httpsListener = new NetworkListener("otp_secure", params.bindAddress, params.securePort);
// Ideally we'd share the threads between HTTP and HTTPS.
httpsListener.setSecure(true);
httpsListener.setSSLEngineConfig(new SSLEngineConfigurator(sslConfig).setClientMode(false).setNeedClientAuth(false));
// For both HTTP and HTTPS listeners: enable gzip compression, set thread pool, add listener to httpServer.
for (NetworkListener listener : new NetworkListener[] { httpListener, httpsListener }) {
CompressionConfig cc = listener.getCompressionConfig();
cc.setCompressionMode(CompressionConfig.CompressionMode.ON);
// the min number of bytes to compress
cc.setCompressionMinSize(50000);
// the mime types to compress
cc.setCompressableMimeTypes("application/json", "text/json");
listener.getTransport().setWorkerThreadPoolConfig(threadPoolConfig);
httpServer.addListener(listener);
}
/* Add a few handlers (~= servlets) to the Grizzly server. */
/* 1. A Grizzly wrapper around the Jersey Application. */
Application app = new OTPApplication(server, !params.insecure);
HttpHandler dynamicHandler = ContainerFactory.createContainer(HttpHandler.class, app);
httpServer.getServerConfiguration().addHttpHandler(dynamicHandler, "/otp/");
/* 2. A static content handler to serve the client JS apps etc. from the classpath. */
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, "/");
/*
* 3. A static content handler to serve local files from the filesystem, under the "local"
* path.
*/
if (params.clientDirectory != null) {
StaticHttpHandler localHandler = new StaticHttpHandler(params.clientDirectory.getAbsolutePath());
localHandler.setFileCacheEnabled(false);
httpServer.getServerConfiguration().addHttpHandler(localHandler, "/local");
}
/* 3. Test alternate method (no Jersey). */
// As in servlets, * is needed in base path to identify the "rest" of the path.
// GraphService gs = (GraphService) iocFactory.getComponentProvider(GraphService.class).getInstance();
// Graph graph = gs.getGraph();
// httpServer.getServerConfiguration().addHttpHandler(new OTPHttpHandler(graph), "/test/*");
// Add shutdown hook to gracefully shut down Grizzly.
// Signal handling (sun.misc.Signal) is potentially not available on all JVMs.
Thread shutdownThread = new Thread(httpServer::shutdown);
Runtime.getRuntime().addShutdownHook(shutdownThread);
/* RELINQUISH CONTROL TO THE SERVER THREAD */
try {
httpServer.start();
LOG.info("Grizzly server running.");
Thread.currentThread().join();
} catch (BindException be) {
LOG.error("Cannot bind to port {}. Is it already in use?", params.port);
} catch (IOException ioe) {
LOG.error("IO exception while starting server.");
} catch (InterruptedException ie) {
LOG.info("Interrupted, shutting down.");
}
// Clean up graceful shutdown hook before shutting down Grizzly.
Runtime.getRuntime().removeShutdownHook(shutdownThread);
httpServer.shutdown();
}Example 22
| Project: usergrid-master File: Server.java View source code |
private void setThreadSize() {
int threadSize = getThreadSizeFromSystemProperties();
java.util.Collection<org.glassfish.grizzly.http.server.NetworkListener> listeners = httpServer.getListeners();
for (org.glassfish.grizzly.http.server.NetworkListener listener : listeners) {
listener.getTransport().getKernelThreadPoolConfig();
org.glassfish.grizzly.nio.transport.TCPNIOTransportBuilder builder = org.glassfish.grizzly.nio.transport.TCPNIOTransportBuilder.newInstance();
org.glassfish.grizzly.threadpool.ThreadPoolConfig config = builder.getWorkerThreadPoolConfig();
config.setCorePoolSize(threadSize);
config.setMaxPoolSize(threadSize);
org.glassfish.grizzly.nio.transport.TCPNIOTransport transport = builder.build();
listener.setTransport(transport);
}
logger.info("thread size set as {}", threadSize);
}Example 23
| Project: glassfish-main-master File: GlassfishNetworkListener.java View source code |
@Override protected ThreadPoolConfig configureThreadPoolConfig(final NetworkListener networkListener, final ThreadPool threadPool) { final ThreadPoolConfig config = super.configureThreadPoolConfig(networkListener, threadPool); config.getInitialMonitoringConfig().addProbes(new ThreadPoolMonitor(grizzlyService.getMonitoring(), name, config)); return config; }