/** * {@inheritDoc} */ @Override protected DeploymentDescriptorBuilder getDeploymentDescriptorBuilder(final SessionStorage sessionStorage, final ServerConfig serverConfig) { return super.getDeploymentDescriptorBuilder(sessionStorage, serverConfig); }
/** * Creates and returns an instance of ServerConfigFactory. * If you want to provide your own ServerConfig factory, this is the place to overwrite. * * @return */ protected ServerConfigFactory getServerConfigFactory() { return new DefaultServerConfigFactory(); }
/** * {@inheritDoc} */ @Override public ServerConfig getServerConfig() { return getServerConfig(getBasePath()); }
/** * For performance reasons ServletResourceProvider is the last resource provider. * * @param serverConfig * @return */ private List<ResourceProvider> selectActiveResourceProviders(final ServerConfig serverConfig) { List<ResourceProvider> resourceProviders = new ArrayList<>(); resourceProviders.add(getFileResourceProvider(serverConfig)); for (ResourceProvider resourceProvider : getAdditionalResourceProviders(serverConfig)) { resourceProviders.add(resourceProvider); } resourceProviders.add(getServletResourceProvider(serverConfig)); return resourceProviders; }
private ServerConfig getServerConfig(final String baseConfigPath) { ServerConfigImpl serverConfig; String tempPath = getTempPath(); String basePath = File.separator + "httpd" + File.separator; try { serverConfig = ServerConfigImpl.createFromPath(baseConfigPath, tempPath); } catch (IOException e) { LOGGER.warning("Unable to read server config. Using the default configuration. " + e.getMessage()); serverConfig = new ServerConfigImpl(basePath, tempPath, new Properties()); } serverConfig.setResourceProviders(selectActiveResourceProviders(serverConfig)); return serverConfig; }
private List<ServletContextImpl> getServletContexts(final ServerConfig serverConfig) { DeploymentDescriptorBuilder deploymentDescriptorBuilder = getDeploymentDescriptorBuilder(new FileSessionStorage(serverConfig.getTempPath()), serverConfig); List<ServletContextImpl> servletContexts = deploymentDescriptorBuilder.build(); for (ServletContextImpl servletContextImpl : servletContexts) { for (Map.Entry<String, Object> entry : getAdditionalServletContextAttributes().entrySet()) { servletContextImpl.setAttribute(entry.getKey(), entry.getValue()); } } return servletContexts; }
/** * The main CLI runner method. * * @param args */ public static void main(final String[] args) { (new DefaultCliServerGui()).init(); }
/** * {@inheritDoc} */ @Override protected String getTempPath() { if (context != null) { return context.getCacheDir().getAbsolutePath() + File.separator + "webserver" + File.separator; } else { return super.getTempPath(); } }
/** * Initializes the server. */ public void init() { System.setProperty("java.util.logging.SimpleFormatter.format", "%1$tF %1$tT - %4$s - %2$s - %5$s%6$s%n"); Logger rootLog = Logger.getLogger(""); rootLog.setLevel(Level.FINE); rootLog.getHandlers()[0].setLevel(Level.FINE); ServerGui gui = new DefaultCliServerGui(); System.out.println(" __ __ ______ ______ ___ ____ \n" + " / // //_ __//_ __// _ \\ / __/___ ____ _ __ ___ ____\n" + " / _ / / / / / / ___/ _\\ \\ / -_)/ __/| |/ // -_)/ __/\n" + "/_//_/ /_/ /_/ /_/ /___/ \\__//_/ |___/ \\__//_/ \n"); System.out.println("https://github.com/piotrpolak/android-http-server"); System.out.println(""); final ControllerImpl controllerImpl = new ControllerImpl(getServerConfigFactory(), ServerSocketFactory.getDefault(), gui); controllerImpl.start(); Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { controllerImpl.stop(); } }); }
private ServletResourceProvider getServletResourceProvider(final ServerConfig serverConfig) { return new ServletResourceProvider( new ServletContainerImpl(new DateProvider(), SERVLET_TIME_TO_LIVE_IN_MS, MONITORING_INTERVAL_IN_MS), getServletContexts(serverConfig) ); } }