123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package hello;
- import java.io.IOException;
- import java.net.URI;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import org.glassfish.grizzly.filterchain.FilterChainBuilder;
- import org.glassfish.grizzly.http.server.AddOn;
- import org.glassfish.grizzly.http.server.FileCacheFilter;
- import org.glassfish.grizzly.http.server.HttpServer;
- import org.glassfish.grizzly.http.server.NetworkListener;
- import org.glassfish.grizzly.http.server.util.HttpPipelineOptAddOn;
- import org.glassfish.grizzly.memory.PooledMemoryManager;
- import org.glassfish.grizzly.nio.transport.TCPNIOTransport;
- import org.glassfish.grizzly.utils.IdleTimeoutFilter;
- import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
- import org.glassfish.jersey.server.ResourceConfig;
- public class WebServer {
- private static final URI BASE_URI = URI.create("http://0.0.0.0:8080/");
- public static void main(String[] args) {
- try {
- final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(BASE_URI,
- createApp(), false);
- Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
- @Override
- public void run() {
- server.shutdownNow();
- }
- }));
- // Some modifications
- NetworkListener defaultListener = server.getListener("grizzly");
- defaultListener.getKeepAlive().setIdleTimeoutInSeconds(-1);
- defaultListener.getKeepAlive().setMaxRequestsCount(-1);
- defaultListener.getFileCache().setEnabled(false);
- defaultListener.registerAddOn(new SimplifyAddOn());
- defaultListener.registerAddOn(new HttpPipelineOptAddOn());
- final TCPNIOTransport transport = defaultListener.getTransport();
- transport.setWorkerThreadPoolConfig(null); // force to not
- // initialize worker
- // thread pool
- transport.setSelectorRunnersCount(Runtime.getRuntime().availableProcessors() * 2);
- transport.setMemoryManager(new PooledMemoryManager());
- server.start();
- System.out.println(String
- .format("TFBApplication started.%nStop the application using CTRL+C"));
- Thread.currentThread().join();
- } catch (IOException | InterruptedException ex) {
- Logger.getLogger(WebServer.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- public static ResourceConfig createApp() {
- return new TFBApplication();
- }
- private static class SimplifyAddOn implements AddOn {
- @Override
- public void setup(final NetworkListener networkListener, final FilterChainBuilder builder) {
- final int fcIdx = builder.indexOfType(FileCacheFilter.class);
- if (fcIdx != -1) {
- builder.remove(fcIdx);
- }
- final int itIdx = builder.indexOfType(IdleTimeoutFilter.class);
- if (itIdx != -1) {
- builder.remove(itIdx);
- }
- }
- }
- }
|