/** * Copyright 2015-2016 Red Hat, Inc, and individual contributors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.wildfly.swarm.ee; import javax.annotation.PostConstruct; import org.wildfly.swarm.config.EE; import org.wildfly.swarm.config.ee.ContextService; import org.wildfly.swarm.config.ee.DefaultBindingsServiceConsumer; import org.wildfly.swarm.config.ee.ManagedExecutorService; import org.wildfly.swarm.config.ee.ManagedScheduledExecutorService; import org.wildfly.swarm.config.ee.ManagedThreadFactory; import org.wildfly.swarm.spi.api.Fraction; import org.wildfly.swarm.spi.api.annotations.MarshalDMR; import org.wildfly.swarm.spi.api.annotations.WildFlyExtension; /** * @author Bob McWhirter */ @WildFlyExtension(module = "org.jboss.as.ee") @MarshalDMR public class EEFraction extends EE<EEFraction> implements Fraction<EEFraction> { public static final String CONCURRENCY_CONTEXT_DEFAULT = "java:jboss/ee/concurrency/context/default"; public static final String CONCURRENCY_FACTORY_DEFAULT = "java:jboss/ee/concurrency/factory/default"; public static final String CONCURRENCY_EXECUTOR_DEFAULT = "java:jboss/ee/concurrency/executor/default"; public static final String CONCURRENCY_SCHEDULER_DEFAULT = "java:jboss/ee/concurrency/scheduler/default"; public static final String DEFAULT_KEY = "default"; public static EEFraction createDefaultFraction() { return createDefaultFraction(null); } public static EEFraction createDefaultFraction(DefaultBindingsServiceConsumer config) { return new EEFraction().applyDefaults(); } @PostConstruct public void postConstruct() { applyDefaults(); } public EEFraction applyDefaults() { return applyDefaults(null); } @SuppressWarnings("unchecked") public EEFraction applyDefaults(DefaultBindingsServiceConsumer config) { specDescriptorPropertyReplacement(false) .contextService(new ContextService(DEFAULT_KEY) .jndiName(CONCURRENCY_CONTEXT_DEFAULT) .useTransactionSetupProvider(false)) .managedThreadFactory(new ManagedThreadFactory(DEFAULT_KEY) .jndiName(CONCURRENCY_FACTORY_DEFAULT) .contextService(DEFAULT_KEY)) .managedExecutorService(new ManagedExecutorService(DEFAULT_KEY) .jndiName(CONCURRENCY_EXECUTOR_DEFAULT) .contextService(DEFAULT_KEY) .hungTaskThreshold(60000L) .coreThreads(5) .maxThreads(25) .keepaliveTime(5000L)) .managedScheduledExecutorService(new ManagedScheduledExecutorService(DEFAULT_KEY) .jndiName(CONCURRENCY_SCHEDULER_DEFAULT) .contextService(DEFAULT_KEY) .hungTaskThreshold(60000L) .coreThreads(5) .keepaliveTime(3000L)); defaultBindingsService((bindings) -> { bindings.contextService("java:jboss/ee/concurrency/context/default"); bindings.managedExecutorService("java:jboss/ee/concurrency/executor/default"); bindings.managedScheduledExecutorService("java:jboss/ee/concurrency/scheduler/default"); bindings.managedThreadFactory("java:jboss/ee/concurrency/factory/default"); if (config != null) { config.accept(bindings); } }); return this; } }