package org.jboss.as.host.controller.operations;
import org.jboss.as.controller.remote.ModelControllerClientOperationHandlerFactoryService;
import org.jboss.as.host.controller.DomainModelControllerService;
import org.jboss.as.host.controller.HostControllerService;
import org.jboss.as.host.controller.mgmt.ServerToHostOperationHandlerFactoryService;
import org.jboss.as.remoting.EndpointService;
import org.jboss.as.remoting.management.ManagementChannelRegistryService;
import org.jboss.as.remoting.management.ManagementRemotingServices;
import org.jboss.as.server.mgmt.ManagementWorkerService;
import org.jboss.msc.service.ServiceRegistry;
import org.jboss.msc.service.ServiceTarget;
import org.jboss.remoting3.RemotingOptions;
import org.xnio.OptionMap;
import org.xnio.Options;
/**
* Utility class that installs remoting services needed by both the native and HTTP upgrade
* based connector.
*
* @author Stuart Douglas
*/
public class NativeManagementServices {
private static final int heartbeatInterval = 15000;
private static final OptionMap SERVICE_OPTIONS = OptionMap.EMPTY;
public static final OptionMap CONNECTION_OPTIONS = OptionMap.create(RemotingOptions.HEARTBEAT_INTERVAL, heartbeatInterval,
Options.READ_TIMEOUT, 45000);
static synchronized void installManagementWorkerService(final ServiceTarget serviceTarget, final ServiceRegistry serviceContainer) {
//install xnio mgmt worker
if (serviceContainer.getService(ManagementWorkerService.SERVICE_NAME) == null) {
ManagementWorkerService.installService(serviceTarget);
}
}
static synchronized void installRemotingServicesIfNotInstalled(final ServiceTarget serviceTarget,
final String hostName,
final ServiceRegistry serviceContainer,
final boolean onDemand) {
if (serviceContainer.getService(ManagementRemotingServices.MANAGEMENT_ENDPOINT) == null) {
ManagementChannelRegistryService.addService(serviceTarget, ManagementRemotingServices.MANAGEMENT_ENDPOINT);
ManagementRemotingServices.installRemotingManagementEndpoint(serviceTarget, ManagementRemotingServices.MANAGEMENT_ENDPOINT,
hostName, EndpointService.EndpointType.MANAGEMENT, CONNECTION_OPTIONS);
ManagementRemotingServices.installManagementChannelOpenListenerService(serviceTarget, ManagementRemotingServices.MANAGEMENT_ENDPOINT,
ManagementRemotingServices.SERVER_CHANNEL,
ServerToHostOperationHandlerFactoryService.SERVICE_NAME, SERVICE_OPTIONS, onDemand);
ManagementRemotingServices.installManagementChannelServices(serviceTarget, ManagementRemotingServices.MANAGEMENT_ENDPOINT,
new ModelControllerClientOperationHandlerFactoryService(),
DomainModelControllerService.SERVICE_NAME, ManagementRemotingServices.MANAGEMENT_CHANNEL,
HostControllerService.HC_EXECUTOR_SERVICE_NAME, HostControllerService.HC_SCHEDULED_EXECUTOR_SERVICE_NAME);
}
}
}