Search in sources :

Example 1 with ManagedScheduledExecutorServiceService

use of org.jboss.as.ee.concurrent.service.ManagedScheduledExecutorServiceService 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)

Aggregations

TimeUnit (java.util.concurrent.TimeUnit)1 AbstractManagedExecutorService (org.glassfish.enterprise.concurrent.AbstractManagedExecutorService)1 CapabilityServiceBuilder (org.jboss.as.controller.CapabilityServiceBuilder)1 ManagedExecutorHungTasksPeriodicTerminationService (org.jboss.as.ee.concurrent.service.ManagedExecutorHungTasksPeriodicTerminationService)1 ManagedScheduledExecutorServiceService (org.jboss.as.ee.concurrent.service.ManagedScheduledExecutorServiceService)1 ModelNode (org.jboss.dmr.ModelNode)1