private static StandardContext startWebApp(Host host, WSEndpointDeploymentUnit unit) throws Exception { StandardContext context = new StandardContext(); try { JBossWebMetaData jbwebMD = unit.getAttachment(WSAttachmentKeys.JBOSSWEB_METADATA_KEY); context.setPath(jbwebMD.getContextRoot()); context.addLifecycleListener(new ContextConfig()); ServerConfigService config = (ServerConfigService) unit.getServiceRegistry().getService(WSServices.CONFIG_SERVICE).getService(); File docBase = new File(config.getValue().getServerTempDir(), jbwebMD.getContextRoot()); if (!docBase.exists()) { docBase.mkdirs(); } context.setDocBase(docBase.getPath()); final Loader loader = new WebCtxLoader(unit.getAttachment(WSAttachmentKeys.CLASSLOADER_KEY)); loader.setContainer(host); context.setLoader(loader); context.setInstanceManager(new LocalInstanceManager()); addServlets(jbwebMD, context); host.addChild(context); context.create(); } catch (Exception e) { throw MESSAGES.createContextPhaseFailed(e); } try { context.start(); } catch (LifecycleException e) { throw MESSAGES.startContextPhaseFailed(e); } return context; }
@Override public void start(StartContext startContext) throws StartException { ServerEnvironment env = injectedServerEnvironment.getValue(); Host virtualHost = injectedVirtualHost.getValue().getHost(); BundleContext syscontext = injectedSystemContext.getValue(); WebServer webServer = injectedWebServer.getValue(); File storageDir = new File( env.getServerTempDir() + File.separator + CONTEXT_NAME + File.separator + "httpservice-root"); context.setDocBase(storageDir.getPath()); storageDir.mkdirs(); context.setPath(CONTEXT_NAME); context.addLifecycleListener(new ContextConfig()); Loader loader = new WebCtxLoader(getClass().getClassLoader()); loader.setContainer(virtualHost); context.setLoader(loader); context.setInstanceManager(new LocalInstanceManager()); context.addMimeMapping("html", "text/html"); context.addMimeMapping("jpg", "image/jpeg"); context.addMimeMapping("png", "image/png"); context.addMimeMapping("gif", "image/gif"); context.addMimeMapping("css", "text/css"); context.addMimeMapping("js", "text/javascript"); virtualHost.addChild(context); WEB_LOGGER.registerWebapp(context.getName()); try { context.create(); } catch (Exception ex) { throw new StartException(WebMessages.MESSAGES.createContextFailed(), ex); } try { context.start(); } catch (LifecycleException ex) { throw new StartException(WebMessages.MESSAGES.startContextFailed(), ex); } Hashtable<String, Object> props = new Hashtable<String, Object>(); props.put(Constants.SERVICE_RANKING, Integer.MIN_VALUE); props.put("provider", getClass().getPackage().getName()); ServiceFactory serviceFactory = new HttpServiceFactory(webServer, virtualHost, context); registration = syscontext.registerService(HttpService.class.getName(), serviceFactory, props); }
@Override public synchronized void start() throws Exception { Host host = ServerUtil.getDefaultHost().getHost(); _serverContext = (StandardContext) host.findChild("/" + _contextName); if (_serverContext == null) { _serverContext = new StandardContext(); _serverContext.setPath("/" + _contextName); File docBase = new File(SERVER_TEMP_DIR, _contextName); if (!docBase.exists()) { if (!docBase.mkdirs()) { throw new RuntimeException("Unable to create temp directory " + docBase.getPath()); } } _serverContext.setDocBase(docBase.getPath()); _serverContext.addLifecycleListener(new ContextConfig()); final Loader loader = new WebCtxLoader(Thread.currentThread().getContextClassLoader()); loader.setContainer(host); _serverContext.setLoader(loader); _serverContext.setInstanceManager(new LocalInstanceManager()); Wrapper wrapper = _serverContext.createWrapper(); wrapper.setName(SERVLET_NAME); wrapper.setServletClass(SwitchYardRemotingServlet.class.getName()); wrapper.setLoadOnStartup(1); _serverContext.addChild(wrapper); _serverContext.addServletMapping("/*", SERVLET_NAME); host.addChild(_serverContext); _serverContext.create(); _serverContext.start(); SwitchYardRemotingServlet remotingServlet = (SwitchYardRemotingServlet) wrapper.getServlet(); remotingServlet.setEndpointPublisher(this); _log.info("Published Remote Service Endpoint " + _serverContext.getPath()); } else { throw new RuntimeException("Context " + _contextName + " already exists!"); } }