Search in sources :

Example 1 with SelfContainedContainer

use of org.wildfly.swarm.internal.wildfly.SelfContainedContainer in project wildfly-swarm by wildfly-swarm.

the class RuntimeServer method start.

public Deployer start(boolean eagerOpen) throws Exception {
    UUID uuid = UUIDFactory.getUUID();
    System.setProperty("jboss.server.management.uuid", uuid.toString());
    File configurationFile;
    try {
        configurationFile = TempFileManager.INSTANCE.newTempFile("swarm-config-", ".xml");
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    this.networkConfigurer.configure();
    List<ModelNode> bootstrapOperations = new ArrayList<>();
    BootstrapConfiguration bootstrapConfiguration = () -> bootstrapOperations;
    this.container = new SelfContainedContainer(new Bootstrap.ConfigurationPersisterFactory() {

        @Override
        public ExtensibleConfigurationPersister createConfigurationPersister(ServerEnvironment serverEnvironment, ExecutorService executorService) {
            return new BootstrapPersister(bootstrapConfiguration, configurationFile);
        }
    });
    try (AutoCloseable handle = Performance.time("pre-customizers")) {
        for (Customizer each : this.preCustomizers) {
            SwarmMessages.MESSAGES.callingPreCustomizer(each);
            each.customize();
        }
    }
    try (AutoCloseable handle = Performance.time("post-customizers")) {
        for (Customizer each : this.postCustomizers) {
            SwarmMessages.MESSAGES.callingPostCustomizer(each);
            each.customize();
        }
    }
    this.networkConfigurer.configure();
    try (AutoCloseable handle = Performance.time("configurable-manager rescan")) {
        this.configurableManager.rescan();
        this.configurableManager.log();
    }
    try (AutoCloseable handle = Performance.time("marshall DMR")) {
        this.dmrMarshaller.marshal(bootstrapOperations);
    }
    SwarmMessages.MESSAGES.wildflyBootstrap(bootstrapOperations.toString());
    Thread.currentThread().setContextClassLoader(RuntimeServer.class.getClassLoader());
    List<ServiceActivator> activators = new ArrayList<>();
    StreamSupport.stream(serviceActivators.spliterator(), false).filter(Objects::nonNull).forEach(activators::add);
    activators.add(new ContentRepositoryServiceActivator(this.contentRepository));
    try (AutoCloseable wildflyStart = Performance.time("WildFly start")) {
        ServiceContainer serviceContainer = null;
        try (AutoCloseable startWildflyItself = Performance.time("Starting WildFly itself")) {
            // serviceContainer = this.container.start(bootstrapOperations, this.contentProvider, activators);
            serviceContainer = this.container.start(bootstrapOperations, activators);
            this.containerStarted = true;
        }
        try (AutoCloseable checkFailedServices = Performance.time("Checking for failed services")) {
            for (ServiceName serviceName : serviceContainer.getServiceNames()) {
                ServiceController<?> serviceController = serviceContainer.getService(serviceName);
                /*
                    if (serviceController.getImmediateUnavailableDependencies().size() > 0) {
                        System.err.println("Service missing dependencies: " + serviceController.getName());
                        for (ServiceName name : serviceController.getImmediateUnavailableDependencies()) {
                            System.err.println("  - " + name);
                        }
                    }
                    */
                StartException exception = serviceController.getStartException();
                if (exception != null) {
                    throw exception;
                }
            }
        }
        /*
            for (ServiceName serviceName : serviceContainer.getServiceNames()) {
                System.err.println(" === " + serviceName);
            }
            */
        ModelController controller = (ModelController) serviceContainer.getService(Services.JBOSS_SERVER_CONTROLLER).getValue();
        Executor executor = Executors.newSingleThreadExecutor();
        try (AutoCloseable creatingControllerClient = Performance.time("Creating controller client")) {
            // Can't use controller.getClientFactory() due to non-public nature of that method.
            // noinspection deprecation
            this.client = controller.createClient(executor);
        }
        RuntimeDeployer deployer = this.deployer.get();
        try (AutoCloseable installDeployer = Performance.time("Installing deployer")) {
            serviceContainer.addService(ServiceName.of("swarm", "deployer"), new ValueService<>(new ImmediateValue<Deployer>(deployer))).install();
        }
        try (AutoCloseable configUserSpaceExt = Performance.time("Configure user-space extensions")) {
            configureUserSpaceExtensions();
        }
        try (AutoCloseable deployments = Performance.time("Implicit Deployments")) {
            for (Archive each : this.implicitDeployments) {
                if (each != null) {
                    deployer.deploy(each);
                }
            }
        }
        this.artifactDeployer.deploy();
        deployer.implicitDeploymentsComplete();
        return deployer;
    }
}
Also used : Archive(org.jboss.shrinkwrap.api.Archive) ContentRepositoryServiceActivator(org.wildfly.swarm.container.runtime.wildfly.ContentRepositoryServiceActivator) ArrayList(java.util.ArrayList) ValueService(org.jboss.msc.service.ValueService) ServiceContainer(org.jboss.msc.service.ServiceContainer) Executor(java.util.concurrent.Executor) ServerEnvironment(org.jboss.as.server.ServerEnvironment) StartException(org.jboss.msc.service.StartException) UUID(java.util.UUID) SelfContainedContainer(org.wildfly.swarm.internal.wildfly.SelfContainedContainer) BootstrapPersister(org.wildfly.swarm.container.runtime.xmlconfig.BootstrapPersister) Deployer(org.wildfly.swarm.container.internal.Deployer) BootstrapConfiguration(org.wildfly.swarm.container.runtime.xmlconfig.BootstrapConfiguration) IOException(java.io.IOException) ContentRepositoryServiceActivator(org.wildfly.swarm.container.runtime.wildfly.ContentRepositoryServiceActivator) ServiceActivator(org.jboss.msc.service.ServiceActivator) ServiceName(org.jboss.msc.service.ServiceName) ExecutorService(java.util.concurrent.ExecutorService) Customizer(org.wildfly.swarm.spi.api.Customizer) ModelNode(org.jboss.dmr.ModelNode) ModelController(org.jboss.as.controller.ModelController) File(java.io.File)

Aggregations

File (java.io.File)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 UUID (java.util.UUID)1 Executor (java.util.concurrent.Executor)1 ExecutorService (java.util.concurrent.ExecutorService)1 ModelController (org.jboss.as.controller.ModelController)1 ServerEnvironment (org.jboss.as.server.ServerEnvironment)1 ModelNode (org.jboss.dmr.ModelNode)1 ServiceActivator (org.jboss.msc.service.ServiceActivator)1 ServiceContainer (org.jboss.msc.service.ServiceContainer)1 ServiceName (org.jboss.msc.service.ServiceName)1 StartException (org.jboss.msc.service.StartException)1 ValueService (org.jboss.msc.service.ValueService)1 Archive (org.jboss.shrinkwrap.api.Archive)1 Deployer (org.wildfly.swarm.container.internal.Deployer)1 ContentRepositoryServiceActivator (org.wildfly.swarm.container.runtime.wildfly.ContentRepositoryServiceActivator)1 BootstrapConfiguration (org.wildfly.swarm.container.runtime.xmlconfig.BootstrapConfiguration)1 BootstrapPersister (org.wildfly.swarm.container.runtime.xmlconfig.BootstrapPersister)1 SelfContainedContainer (org.wildfly.swarm.internal.wildfly.SelfContainedContainer)1