private void run() throws Exception { InetSocketAddress address; if (this.host != null) { address = new InetSocketAddress(this.host, this.port); } else { address = new InetSocketAddress(this.port); } Server server = new Server(address); ContextHandlerCollection handlerCollection = new ContextHandlerCollection(); final ModelRegistry modelRegistry = new ModelRegistry(); final MetricRegistry metricRegistry = new MetricRegistry(); Binder binder = new AbstractBinder() { @Override protected void configure() { bind(modelRegistry).to(ModelRegistry.class); bind(metricRegistry).to(MetricRegistry.class); } }; ResourceConfig config = new ResourceConfig(ModelResource.class); config.register(binder); config.register(JacksonFeature.class); config.register(MultiPartFeature.class); config.register(ObjectMapperProvider.class); config.register(RolesAllowedDynamicFeature.class); // Naive implementation that grants the "admin" role to all local network users config.register(NetworkSecurityContextFilter.class); ServletContextHandler servletHandler = new ServletContextHandler(); servletHandler.setContextPath(this.contextPath); ServletContainer jerseyServlet = new ServletContainer(config); servletHandler.addServlet(new ServletHolder(jerseyServlet), "/*"); InstrumentedHandler instrumentedHandler = new InstrumentedHandler(metricRegistry); instrumentedHandler.setHandler(servletHandler); handlerCollection.addHandler(instrumentedHandler); if (this.consoleWar != null) { WebAppContext consoleHandler = new WebAppContext(); consoleHandler.setContextPath(this.contextPath + "/console"); // XXX consoleHandler.setWar(this.consoleWar.getAbsolutePath()); handlerCollection.addHandler(consoleHandler); } server.setHandler(handlerCollection); DirectoryDeployer deployer = null; if (this.modelDir != null) { if (!this.modelDir.isDirectory()) { throw new IOException(this.modelDir.getAbsolutePath() + " is not a directory"); } deployer = new DirectoryDeployer(modelRegistry, this.modelDir.toPath()); } server.start(); if (deployer != null) { deployer.start(); } server.join(); if (deployer != null) { deployer.interrupt(); deployer.join(); } }
public static void main(String[] args) throws Exception { int timeout = (int) Duration.ONE_HOUR.getMilliseconds(); Server server = new Server(); SocketConnector connector = new SocketConnector(); // Set some timeout options to make debugging easier. connector.setMaxIdleTime(timeout); connector.setSoLingerTime(-1); connector.setPort(8080); server.addConnector(connector); Resource keystore = Resource.newClassPathResource("/keystore"); if (keystore != null && keystore.exists()) { // if a keystore for a SSL certificate is available, start a SSL // connector on port 8443. // By default, the quickstart comes with a Apache Wicket Quickstart // Certificate that expires about half way september 2021. Do not // use this certificate anywhere important as the passwords are // available in the source. connector.setConfidentialPort(8443); SslContextFactory factory = new SslContextFactory(); factory.setKeyStoreResource(keystore); factory.setKeyStorePassword("wicket"); factory.setTrustStoreResource(keystore); factory.setKeyManagerPassword("wicket"); SslSocketConnector sslConnector = new SslSocketConnector(factory); sslConnector.setMaxIdleTime(timeout); sslConnector.setPort(8443); sslConnector.setAcceptors(4); server.addConnector(sslConnector); System.out.println("SSL access to the quickstart has been enabled on port 8443"); System.out.println("You can access the application using SSL on https://localhost:8443"); System.out.println(); } WebAppContext bb = new WebAppContext(); bb.setServer(server); bb.setContextPath("/"); bb.setWar("src/main/webapp"); // START JMX SERVER // MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); // MBeanContainer mBeanContainer = new MBeanContainer(mBeanServer); // server.getContainer().addEventListener(mBeanContainer); // mBeanContainer.start(); server.setHandler(bb); try { System.out.println(">>> STARTING EMBEDDED JETTY SERVER, PRESS ANY KEY TO STOP"); server.start(); System.in.read(); System.out.println(">>> STOPPING EMBEDDED JETTY SERVER"); server.stop(); server.join(); } catch (Exception e) { e.printStackTrace(); System.exit(1); } }