@Override protected void configure() { installFactories(); final SessionIdManager sessionIdManager = new HashSessionIdManager(); final SessionManager sessionManager = new HashSessionManager(); sessionManager.setSessionPath("/"); sessionManager.setSessionIdManager(sessionIdManager); bind(SessionManager.class).toInstance(sessionManager); bind(SessionIdManager.class).toInstance(sessionIdManager); bind(Configuration.class).toInstance(configuration); bind(HostsMap.class).toInstance(hostsMap); bind(PasswordEncoder.class).toInstance(new StandardPasswordEncoder()); bind(DelegatingFilterProxy.class) .toInstance( new DelegatingFilterProxy() { { setTargetBeanName("springSecurityFilterChain"); } }); bind(Gson.class).annotatedWith(Names.named("prettyGson")).toInstance(prettyGson); install(buildJpaPersistModule()); bind(Gson.class).in(Scopes.SINGLETON); bind(SecureRandom.class).in(Scopes.SINGLETON); bind(Clusters.class).to(ClustersImpl.class); bind(AmbariCustomCommandExecutionHelper.class); bind(ActionDBAccessor.class).to(ActionDBAccessorImpl.class); bindConstant().annotatedWith(Names.named("schedulerSleeptime")).to(10000L); // This time is added to summary timeout time of all tasks in stage // So it's an "additional time", given to stage to finish execution before // it is considered as timed out bindConstant().annotatedWith(Names.named("actionTimeout")).to(600000L); bindConstant().annotatedWith(Names.named("dbInitNeeded")).to(dbInitNeeded); bindConstant().annotatedWith(Names.named("statusCheckInterval")).to(5000L); // ExecutionCommands cache size bindConstant() .annotatedWith(Names.named("executionCommandCacheSize")) .to(configuration.getExecutionCommandsCacheSize()); bind(AmbariManagementController.class).to(AmbariManagementControllerImpl.class); bind(AbstractRootServiceResponseFactory.class).to(RootServiceResponseFactory.class); bind(ServerActionManager.class).to(ServerActionManagerImpl.class); bind(ExecutionScheduler.class).to(ExecutionSchedulerImpl.class); bind(DBAccessor.class).to(DBAccessorImpl.class); bind(ViewInstanceHandlerList.class).to(AmbariHandlerList.class); requestStaticInjection(ExecutionCommandWrapper.class); }
public void startWebSocketServer(final Injector injector) { httpServer = new Server(); List<Connector> connectors = getSelectChannelConnectors(httpAddresses); if (connectors.isEmpty()) { LOG.severe("No valid http end point address provided!"); } for (Connector connector : connectors) { httpServer.addConnector(connector); } final WebAppContext context = new WebAppContext(); context.setParentLoaderPriority(true); if (jettySessionManager != null) { // This disables JSessionIDs in URLs redirects // see: // http://stackoverflow.com/questions/7727534/how-do-you-disable-jsessionid-for-jetty-running-with-the-eclipse-jetty-maven-plu // and: // http://jira.codehaus.org/browse/JETTY-467?focusedCommentId=114884&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-114884 jettySessionManager.setSessionIdPathParameterName(null); context.getSessionHandler().setSessionManager(jettySessionManager); } final ResourceCollection resources = new ResourceCollection(resourceBases); context.setBaseResource(resources); addWebSocketServlets(); try { final Injector parentInjector = injector; final ServletModule servletModule = getServletModule(parentInjector); ServletContextListener contextListener = new GuiceServletContextListener() { private final Injector childInjector = parentInjector.createChildInjector(servletModule); @Override protected Injector getInjector() { return childInjector; } }; context.addEventListener(contextListener); context.addFilter(GuiceFilter.class, "/*", EnumSet.allOf(DispatcherType.class)); context.addFilter(GzipFilter.class, "/webclient/*", EnumSet.allOf(DispatcherType.class)); String[] hosts = new String[httpAddresses.length]; for (int i = 0; i < httpAddresses.length; i++) { hosts[i] = httpAddresses[i].getHostName(); } context.addVirtualHosts(hosts); httpServer.setHandler(context); httpServer.start(); restoreSessions(); } catch (Exception e) { // yes, .start() throws "Exception" LOG.severe("Fatal error starting http server.", e); return; } LOG.fine("WebSocket server running."); }