Search in sources :

Example 6 with CapabilityServiceBuilder

use of org.jboss.as.controller.CapabilityServiceBuilder in project wildfly by wildfly.

the class MailSessionAdd method installRuntimeServices.

static void installRuntimeServices(OperationContext context, PathAddress address, ModelNode fullModel) throws OperationFailedException {
    final String jndiName = getJndiName(fullModel, context);
    final CapabilityServiceTarget serviceTarget = context.getCapabilityServiceTarget();
    final MailSessionConfig config = from(context, fullModel);
    final MailSessionService service = new MailSessionService(config);
    final CapabilityServiceBuilder mailSessionBuilder = serviceTarget.addCapability(SESSION_CAPABILITY.fromBaseCapability(address.getLastElement().getValue())).setInstance(service);
    addOutboundSocketDependency(service, mailSessionBuilder, config.getImapServer());
    addCredentialStoreReference(config.getImapServer(), context, fullModel, mailSessionBuilder, MailSubsystemModel.IMAP_SERVER_PATH);
    addOutboundSocketDependency(service, mailSessionBuilder, config.getPop3Server());
    addCredentialStoreReference(config.getPop3Server(), context, fullModel, mailSessionBuilder, MailSubsystemModel.POP3_SERVER_PATH);
    addOutboundSocketDependency(service, mailSessionBuilder, config.getSmtpServer());
    addCredentialStoreReference(config.getSmtpServer(), context, fullModel, mailSessionBuilder, MailSubsystemModel.SMTP_SERVER_PATH);
    for (CustomServerConfig server : config.getCustomServers()) {
        if (server.getOutgoingSocketBinding() != null) {
            addOutboundSocketDependency(service, mailSessionBuilder, server);
        }
        addCredentialStoreReference(server, context, fullModel, mailSessionBuilder, PathElement.pathElement(MailSubsystemModel.CUSTOM_SERVER_PATH.getKey(), server.getProtocol()));
    }
    mailSessionBuilder.addAliases(MAIL_SESSION_SERVICE_NAME.append(address.getLastElement().getValue()));
    final ManagedReferenceFactory valueManagedReferenceFactory = new MailSessionManagedReferenceFactory(service);
    final ContextNames.BindInfo bindInfo = ContextNames.bindInfoFor(jndiName);
    final BinderService binderService = new BinderService(bindInfo.getBindName());
    binderService.getManagedObjectInjector().inject(valueManagedReferenceFactory);
    final ServiceBuilder<?> binderBuilder = serviceTarget.addService(bindInfo.getBinderServiceName(), binderService).addDependency(bindInfo.getParentContextServiceName(), ServiceBasedNamingStore.class, binderService.getNamingStoreInjector()).addListener(new LifecycleListener() {

        private volatile boolean bound;

        @Override
        public void handleEvent(final ServiceController<?> controller, final LifecycleEvent event) {
            switch(event) {
                case UP:
                    {
                        MailLogger.ROOT_LOGGER.boundMailSession(jndiName);
                        bound = true;
                        break;
                    }
                case DOWN:
                    {
                        if (bound) {
                            MailLogger.ROOT_LOGGER.unboundMailSession(jndiName);
                        }
                        break;
                    }
                case REMOVED:
                    {
                        MailLogger.ROOT_LOGGER.removedMailSession(jndiName);
                        break;
                    }
            }
        }
    });
    mailSessionBuilder.setInitialMode(ServiceController.Mode.ACTIVE).install();
    binderBuilder.setInitialMode(ServiceController.Mode.ACTIVE).install();
}
Also used : LifecycleListener(org.jboss.msc.service.LifecycleListener) BinderService(org.jboss.as.naming.service.BinderService) CapabilityServiceBuilder(org.jboss.as.controller.CapabilityServiceBuilder) ServiceBasedNamingStore(org.jboss.as.naming.ServiceBasedNamingStore) ManagedReferenceFactory(org.jboss.as.naming.ManagedReferenceFactory) LifecycleEvent(org.jboss.msc.service.LifecycleEvent) CapabilityServiceTarget(org.jboss.as.controller.CapabilityServiceTarget) ContextNames(org.jboss.as.naming.deployment.ContextNames)

Example 7 with CapabilityServiceBuilder

use of org.jboss.as.controller.CapabilityServiceBuilder in project wildfly by wildfly.

the class ContextServiceAdd method performRuntime.

@Override
protected void performRuntime(OperationContext context, ModelNode operation, Resource resource) throws OperationFailedException {
    final ModelNode model = resource.getModel();
    final String name = context.getCurrentAddressValue();
    final String jndiName = ContextServiceResourceDefinition.JNDI_NAME_AD.resolveModelAttribute(context, model).asString();
    final boolean useTransactionSetupProvider = ContextServiceResourceDefinition.USE_TRANSACTION_SETUP_PROVIDER_AD.resolveModelAttribute(context, model).asBoolean();
    // install the service which manages the default context service
    final ContextServiceService contextServiceService = new ContextServiceService(name, jndiName, new DefaultContextSetupProviderImpl());
    final CapabilityServiceBuilder serviceBuilder = context.getCapabilityServiceTarget().addCapability(ContextServiceResourceDefinition.CAPABILITY, contextServiceService);
    if (useTransactionSetupProvider) {
        // add it to deps of context service's service, for injection of its value
        serviceBuilder.addDependency(ConcurrentServiceNames.TRANSACTION_SETUP_PROVIDER_SERVICE_NAME, TransactionSetupProvider.class, contextServiceService.getTransactionSetupProvider());
    }
    serviceBuilder.install();
}
Also used : ContextServiceService(org.jboss.as.ee.concurrent.service.ContextServiceService) CapabilityServiceBuilder(org.jboss.as.controller.CapabilityServiceBuilder) DefaultContextSetupProviderImpl(org.jboss.as.ee.concurrent.DefaultContextSetupProviderImpl) ModelNode(org.jboss.dmr.ModelNode)

Example 8 with CapabilityServiceBuilder

use of org.jboss.as.controller.CapabilityServiceBuilder in project wildfly by wildfly.

the class ManagedScheduledExecutorServiceAdd method performRuntime.

@Override
protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException {
    final String name = context.getCurrentAddressValue();
    final String jndiName = ManagedExecutorServiceResourceDefinition.JNDI_NAME_AD.resolveModelAttribute(context, model).asString();
    final long hungTaskTerminationPeriod = ManagedScheduledExecutorServiceResourceDefinition.HUNG_TASK_TERMINATION_PERIOD_AD.resolveModelAttribute(context, model).asLong();
    final long hungTaskThreshold = ManagedScheduledExecutorServiceResourceDefinition.HUNG_TASK_THRESHOLD_AD.resolveModelAttribute(context, model).asLong();
    final boolean longRunningTasks = ManagedScheduledExecutorServiceResourceDefinition.LONG_RUNNING_TASKS_AD.resolveModelAttribute(context, model).asBoolean();
    final int coreThreads;
    final ModelNode coreThreadsModel = ManagedScheduledExecutorServiceResourceDefinition.CORE_THREADS_AD.resolveModelAttribute(context, model);
    // value 0 means the same as undefined
    if (coreThreadsModel.isDefined() && coreThreadsModel.asInt() != 0) {
        coreThreads = coreThreadsModel.asInt();
    } else {
        coreThreads = (ProcessorInfo.availableProcessors() * 2);
    }
    final long keepAliveTime = ManagedScheduledExecutorServiceResourceDefinition.KEEPALIVE_TIME_AD.resolveModelAttribute(context, model).asLong();
    final TimeUnit keepAliveTimeUnit = TimeUnit.MILLISECONDS;
    final long threadLifeTime = 0L;
    final AbstractManagedExecutorService.RejectPolicy rejectPolicy = AbstractManagedExecutorService.RejectPolicy.valueOf(ManagedScheduledExecutorServiceResourceDefinition.REJECT_POLICY_AD.resolveModelAttribute(context, model).asString());
    final Integer threadPriority;
    if (model.hasDefined(ManagedScheduledExecutorServiceResourceDefinition.THREAD_PRIORITY) || !model.hasDefined(ManagedScheduledExecutorServiceResourceDefinition.THREAD_FACTORY)) {
        // defined, or use default value in case deprecated thread-factory also not defined
        threadPriority = ManagedScheduledExecutorServiceResourceDefinition.THREAD_PRIORITY_AD.resolveModelAttribute(context, model).asInt();
    } else {
        // not defined and deprecated thread-factory is defined, use it instead
        threadPriority = null;
    }
    final CapabilityServiceBuilder serviceBuilder = context.getCapabilityServiceTarget().addCapability(ManagedScheduledExecutorServiceResourceDefinition.CAPABILITY);
    final Supplier<ManagedExecutorHungTasksPeriodicTerminationService> hungTasksPeriodicTerminationService = serviceBuilder.requires(ConcurrentServiceNames.HUNG_TASK_PERIODIC_TERMINATION_SERVICE_NAME);
    final ManagedScheduledExecutorServiceService service = new ManagedScheduledExecutorServiceService(name, jndiName, hungTaskThreshold, hungTaskTerminationPeriod, longRunningTasks, coreThreads, keepAliveTime, keepAliveTimeUnit, threadLifeTime, rejectPolicy, threadPriority, hungTasksPeriodicTerminationService);
    serviceBuilder.setInstance(service);
    String contextService = null;
    if (model.hasDefined(ManagedScheduledExecutorServiceResourceDefinition.CONTEXT_SERVICE)) {
        contextService = ManagedScheduledExecutorServiceResourceDefinition.CONTEXT_SERVICE_AD.resolveModelAttribute(context, model).asString();
    }
    if (contextService != null) {
        serviceBuilder.addCapabilityRequirement(ContextServiceResourceDefinition.CAPABILITY.getName(), ContextServiceImpl.class, service.getContextServiceInjector(), contextService);
    }
    String threadFactory = null;
    if (model.hasDefined(ManagedScheduledExecutorServiceResourceDefinition.THREAD_FACTORY)) {
        threadFactory = ManagedScheduledExecutorServiceResourceDefinition.THREAD_FACTORY_AD.resolveModelAttribute(context, model).asString();
    }
    if (threadFactory != null) {
        serviceBuilder.addCapabilityRequirement(ManagedThreadFactoryResourceDefinition.CAPABILITY.getName(), ManagedThreadFactoryImpl.class, service.getManagedThreadFactoryInjector(), threadFactory);
    }
    if (context.hasOptionalCapability(REQUEST_CONTROLLER_CAPABILITY_NAME, null, null)) {
        serviceBuilder.addCapabilityRequirement(REQUEST_CONTROLLER_CAPABILITY_NAME, RequestController.class, service.getRequestController());
    }
    serviceBuilder.install();
}
Also used : AbstractManagedExecutorService(org.glassfish.enterprise.concurrent.AbstractManagedExecutorService) CapabilityServiceBuilder(org.jboss.as.controller.CapabilityServiceBuilder) TimeUnit(java.util.concurrent.TimeUnit) ModelNode(org.jboss.dmr.ModelNode) ManagedExecutorHungTasksPeriodicTerminationService(org.jboss.as.ee.concurrent.service.ManagedExecutorHungTasksPeriodicTerminationService) ManagedScheduledExecutorServiceService(org.jboss.as.ee.concurrent.service.ManagedScheduledExecutorServiceService)

Example 9 with CapabilityServiceBuilder

use of org.jboss.as.controller.CapabilityServiceBuilder in project wildfly by wildfly.

the class ManagedThreadFactoryAdd method performRuntime.

@Override
protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException {
    final String name = PathAddress.pathAddress(operation.get(ModelDescriptionConstants.ADDRESS)).getLastElement().getValue();
    final String jndiName = ManagedExecutorServiceResourceDefinition.JNDI_NAME_AD.resolveModelAttribute(context, model).asString();
    final int priority = ManagedThreadFactoryResourceDefinition.PRIORITY_AD.resolveModelAttribute(context, model).asInt();
    final ManagedThreadFactoryService service = new ManagedThreadFactoryService(name, jndiName, priority);
    final CapabilityServiceBuilder serviceBuilder = context.getCapabilityServiceTarget().addCapability(ManagedThreadFactoryResourceDefinition.CAPABILITY, service);
    String contextService = null;
    if (model.hasDefined(ManagedThreadFactoryResourceDefinition.CONTEXT_SERVICE)) {
        contextService = ManagedThreadFactoryResourceDefinition.CONTEXT_SERVICE_AD.resolveModelAttribute(context, model).asString();
    }
    if (contextService != null) {
        serviceBuilder.addCapabilityRequirement(ContextServiceResourceDefinition.CAPABILITY.getName(), ContextServiceImpl.class, service.getContextServiceInjector(), contextService);
    }
    serviceBuilder.install();
}
Also used : CapabilityServiceBuilder(org.jboss.as.controller.CapabilityServiceBuilder) ManagedThreadFactoryService(org.jboss.as.ee.concurrent.service.ManagedThreadFactoryService)

Example 10 with CapabilityServiceBuilder

use of org.jboss.as.controller.CapabilityServiceBuilder in project wildfly by wildfly.

the class ManagedExecutorServiceAdd method performRuntime.

@Override
protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException {
    final String name = context.getCurrentAddressValue();
    final String jndiName = ManagedExecutorServiceResourceDefinition.JNDI_NAME_AD.resolveModelAttribute(context, model).asString();
    final long hungTaskTerminationPeriod = ManagedExecutorServiceResourceDefinition.HUNG_TASK_TERMINATION_PERIOD_AD.resolveModelAttribute(context, model).asLong();
    final long hungTaskThreshold = ManagedExecutorServiceResourceDefinition.HUNG_TASK_THRESHOLD_AD.resolveModelAttribute(context, model).asLong();
    final boolean longRunningTasks = ManagedExecutorServiceResourceDefinition.LONG_RUNNING_TASKS_AD.resolveModelAttribute(context, model).asBoolean();
    final int coreThreads;
    final ModelNode coreThreadsModel = ManagedExecutorServiceResourceDefinition.CORE_THREADS_AD.resolveModelAttribute(context, model);
    if (coreThreadsModel.isDefined()) {
        coreThreads = coreThreadsModel.asInt();
    } else {
        coreThreads = (ProcessorInfo.availableProcessors() * 2);
    }
    final int maxThreads;
    final ModelNode maxThreadsModel = ManagedExecutorServiceResourceDefinition.MAX_THREADS_AD.resolveModelAttribute(context, model);
    if (maxThreadsModel.isDefined()) {
        maxThreads = maxThreadsModel.asInt();
    } else {
        maxThreads = coreThreads;
    }
    // Note that this must be done in the runtime stage since the core-threads value may be calculated
    if (maxThreads < coreThreads) {
        throw EeLogger.ROOT_LOGGER.invalidMaxThreads(maxThreads, coreThreads);
    }
    final long keepAliveTime = ManagedExecutorServiceResourceDefinition.KEEPALIVE_TIME_AD.resolveModelAttribute(context, model).asLong();
    final TimeUnit keepAliveTimeUnit = TimeUnit.MILLISECONDS;
    final long threadLifeTime = 0L;
    final int queueLength;
    final ModelNode queueLengthModel = ManagedExecutorServiceResourceDefinition.QUEUE_LENGTH_AD.resolveModelAttribute(context, model);
    if (queueLengthModel.isDefined()) {
        queueLength = queueLengthModel.asInt();
    } else {
        queueLength = Integer.MAX_VALUE;
    }
    final AbstractManagedExecutorService.RejectPolicy rejectPolicy = AbstractManagedExecutorService.RejectPolicy.valueOf(ManagedExecutorServiceResourceDefinition.REJECT_POLICY_AD.resolveModelAttribute(context, model).asString());
    final Integer threadPriority;
    if (model.hasDefined(ManagedExecutorServiceResourceDefinition.THREAD_PRIORITY) || !model.hasDefined(ManagedExecutorServiceResourceDefinition.THREAD_FACTORY)) {
        // defined, or use default value in case deprecated thread-factory also not defined
        threadPriority = ManagedExecutorServiceResourceDefinition.THREAD_PRIORITY_AD.resolveModelAttribute(context, model).asInt();
    } else {
        // not defined and deprecated thread-factory is defined, use it instead
        threadPriority = null;
    }
    final CapabilityServiceBuilder serviceBuilder = context.getCapabilityServiceTarget().addCapability(ManagedExecutorServiceResourceDefinition.CAPABILITY);
    final Supplier<ManagedExecutorHungTasksPeriodicTerminationService> hungTasksPeriodicTerminationService = serviceBuilder.requires(ConcurrentServiceNames.HUNG_TASK_PERIODIC_TERMINATION_SERVICE_NAME);
    final ManagedExecutorServiceService service = new ManagedExecutorServiceService(name, jndiName, hungTaskThreshold, hungTaskTerminationPeriod, longRunningTasks, coreThreads, maxThreads, keepAliveTime, keepAliveTimeUnit, threadLifeTime, queueLength, rejectPolicy, threadPriority, hungTasksPeriodicTerminationService);
    serviceBuilder.setInstance(service);
    String contextService = null;
    if (model.hasDefined(ManagedExecutorServiceResourceDefinition.CONTEXT_SERVICE)) {
        contextService = ManagedExecutorServiceResourceDefinition.CONTEXT_SERVICE_AD.resolveModelAttribute(context, model).asString();
    }
    if (contextService != null) {
        serviceBuilder.addCapabilityRequirement(ContextServiceResourceDefinition.CAPABILITY.getName(), ContextServiceImpl.class, service.getContextServiceInjector(), contextService);
    }
    String threadFactory = null;
    if (model.hasDefined(ManagedExecutorServiceResourceDefinition.THREAD_FACTORY)) {
        threadFactory = ManagedExecutorServiceResourceDefinition.THREAD_FACTORY_AD.resolveModelAttribute(context, model).asString();
    }
    if (threadFactory != null) {
        serviceBuilder.addCapabilityRequirement(ManagedThreadFactoryResourceDefinition.CAPABILITY.getName(), ManagedThreadFactoryImpl.class, service.getManagedThreadFactoryInjector(), threadFactory);
    }
    if (context.hasOptionalCapability(REQUEST_CONTROLLER_CAPABILITY_NAME, null, null)) {
        serviceBuilder.addCapabilityRequirement(REQUEST_CONTROLLER_CAPABILITY_NAME, RequestController.class, service.getRequestController());
    }
    serviceBuilder.install();
}
Also used : ManagedExecutorServiceService(org.jboss.as.ee.concurrent.service.ManagedExecutorServiceService) AbstractManagedExecutorService(org.glassfish.enterprise.concurrent.AbstractManagedExecutorService) CapabilityServiceBuilder(org.jboss.as.controller.CapabilityServiceBuilder) TimeUnit(java.util.concurrent.TimeUnit) ModelNode(org.jboss.dmr.ModelNode) ManagedExecutorHungTasksPeriodicTerminationService(org.jboss.as.ee.concurrent.service.ManagedExecutorHungTasksPeriodicTerminationService)

Aggregations

CapabilityServiceBuilder (org.jboss.as.controller.CapabilityServiceBuilder)10 ModelNode (org.jboss.dmr.ModelNode)6 TimeUnit (java.util.concurrent.TimeUnit)2 AbstractManagedExecutorService (org.glassfish.enterprise.concurrent.AbstractManagedExecutorService)2 ManagedExecutorHungTasksPeriodicTerminationService (org.jboss.as.ee.concurrent.service.ManagedExecutorHungTasksPeriodicTerminationService)2 OptionMap (org.xnio.OptionMap)2 ListenerRegistry (io.undertow.server.ListenerRegistry)1 ChannelUpgradeHandler (io.undertow.server.handlers.ChannelUpgradeHandler)1 URI (java.net.URI)1 URISyntaxException (java.net.URISyntaxException)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 CapabilityServiceConfigurator (org.jboss.as.clustering.controller.CapabilityServiceConfigurator)1 CapabilityServiceTarget (org.jboss.as.controller.CapabilityServiceTarget)1 OperationFailedException (org.jboss.as.controller.OperationFailedException)1 DefaultContextSetupProviderImpl (org.jboss.as.ee.concurrent.DefaultContextSetupProviderImpl)1 ContextServiceService (org.jboss.as.ee.concurrent.service.ContextServiceService)1 ManagedExecutorServiceService (org.jboss.as.ee.concurrent.service.ManagedExecutorServiceService)1 ManagedScheduledExecutorServiceService (org.jboss.as.ee.concurrent.service.ManagedScheduledExecutorServiceService)1