@BeforeClass public static void startServer() throws Exception { EmbeddedServerFactory.setupCleanDirectories(System.getProperties()); ServerEnvironment serverEnvironment = Main.determineEnvironment( new String[0], new Properties(System.getProperties()), System.getenv()); Assert.assertNotNull(serverEnvironment); final Bootstrap bootstrap = Bootstrap.Factory.newInstance(); final Bootstrap.Configuration configuration = new Bootstrap.Configuration(); configuration.setServerEnvironment(serverEnvironment); configuration.setModuleLoader(Module.getBootModuleLoader()); configuration.setPortOffset(0); container = bootstrap.startup(configuration, Collections.<ServiceActivator>emptyList()).get(); Assert.assertNotNull(container); }
@Override public void start() throws ServerStartException { try { // Take control of server use of System.exit SystemExiter.initialize( new SystemExiter.Exiter() { @Override public void exit(int status) { StandaloneServerImpl.this.exit(); } }); // Take control of stdio try { StdioContext.install(); uninstallStdIo = true; } catch (IllegalStateException ignored) { // already installed } // Determine the ServerEnvironment ServerEnvironment serverEnvironment = Main.determineEnvironment( cmdargs, systemProps, systemEnv, ServerEnvironment.LaunchType.EMBEDDED); Bootstrap bootstrap = Bootstrap.Factory.newInstance(); Bootstrap.Configuration configuration = new Bootstrap.Configuration(serverEnvironment); /* * This would setup an {@link TransientConfigurationPersister} which does not persist anything * final ExtensionRegistry extensionRegistry = configuration.getExtensionRegistry(); final Bootstrap.ConfigurationPersisterFactory configurationPersisterFactory = new Bootstrap.ConfigurationPersisterFactory() { @Override public ExtensibleConfigurationPersister createConfigurationPersister(ServerEnvironment serverEnvironment, ExecutorService executorService) { final QName rootElement = new QName(Namespace.CURRENT.getUriString(), "server"); final StandaloneXml parser = new StandaloneXml(Module.getBootModuleLoader(), executorService, extensionRegistry); final File configurationFile = serverEnvironment.getServerConfigurationFile().getBootFile(); XmlConfigurationPersister persister = new TransientConfigurationPersister(configurationFile, rootElement, parser, parser); for (Namespace namespace : Namespace.domainValues()) { if (!namespace.equals(Namespace.CURRENT)) { persister.registerAdditionalRootElement(new QName(namespace.getUriString(), "server"), parser); } } extensionRegistry.setWriterRegistry(persister); return persister; } }; configuration.setConfigurationPersisterFactory(configurationPersisterFactory); */ configuration.setModuleLoader(moduleLoader); Future<ServiceContainer> future = bootstrap.startup(configuration, Collections.<ServiceActivator>emptyList()); serviceContainer = future.get(); executorService = Executors.newCachedThreadPool(); @SuppressWarnings("unchecked") final Value<ControlledProcessStateService> processStateServiceValue = (Value<ControlledProcessStateService>) serviceContainer.getRequiredService(ControlledProcessStateService.SERVICE_NAME); controlledProcessStateService = processStateServiceValue.getValue(); controlledProcessStateService.addPropertyChangeListener(processStateListener); establishModelControllerClient(controlledProcessStateService.getCurrentState()); } catch (RuntimeException rte) { throw rte; } catch (Exception ex) { throw EmbeddedLogger.ROOT_LOGGER.cannotStartEmbeddedServer(ex); } }