String channel = ModelNodes.asString(TransportResourceDefinition.CHANNEL.resolveModelAttribute(context, transport));
transportExecutor = ModelNodes.asString(TransportResourceDefinition.EXECUTOR.resolveModelAttribute(context, transport));
if (!name.equals(channel)) {
new BinderServiceBuilder(target).build(ChannelService.createChannelBinding(name), ChannelService.getServiceName(name), Channel.class).install();
ChannelService.build(target, name).setInitialMode(ON_DEMAND).install();
if (channel == null) {
// Transport uses the default channel - we need to find its actual name to locate the appropriate ChannelFactory service
PathAddress jgroupsAddress = address.subAddress(0, address.size() - 2).append(JGroupsSubsystemResourceDefinition.PATH);
ModelNode jgroupsModel = context.readResourceFromRoot(jgroupsAddress).getModel();
channel = ModelNodes.asString(JGroupsSubsystemResourceDefinition.DEFAULT_CHANNEL.resolveModelAttribute(context, jgroupsModel));
}
new InjectedValueServiceBuilder(target).build(ChannelService.getFactoryServiceName(name), ChannelFactoryService.getServiceName(channel), ChannelFactory.class).install();
for (GroupServiceInstaller installer : ServiceLoader.load(ClusteredGroupServiceInstaller.class, ClusteredGroupServiceInstaller.class.getClassLoader())) {
log.debugf("Installing %s for cache container %s", installer.getClass().getSimpleName(), name);
Iterator<ServiceName> serviceNames = installer.getServiceNames(channel).iterator();
for (ServiceName serviceName : installer.getServiceNames(name)) {
builder.build(serviceName, serviceNames.next(), Object.class).install();
}
}
}
}
}
if (transportConfig == null) {
for (GroupServiceInstaller installer : ServiceLoader.load(LocalGroupServiceInstaller.class, LocalGroupServiceInstaller.class.getClassLoader())) {
log.debugf("Installing %s for cache container %s", installer.getClass().getSimpleName(), name);
installer.install(target, name, module);
}
}
// Install cache container configuration service
ServiceName configServiceName = EmbeddedCacheManagerConfigurationService.getServiceName(name);
EmbeddedCacheManagerDependencies dependencies = new EmbeddedCacheManagerDependencies(transportConfig);
ServiceBuilder<EmbeddedCacheManagerConfiguration> configBuilder = target.addService(configServiceName, new EmbeddedCacheManagerConfigurationService(name, defaultCache, statistics, module, dependencies))
.addDependency(Services.JBOSS_SERVICE_MODULE_LOADER, ModuleLoader.class, dependencies.getModuleLoaderInjector())
.addDependency(MBeanServerService.SERVICE_NAME, MBeanServer.class, dependencies.getMBeanServerInjector())
;
if (transportConfig != null) {
if (transportExecutor != null) {
addExecutorDependency(configBuilder, transportExecutor, transportConfig.getExecutorInjector());
}
configBuilder.addDependency(ChannelService.getServiceName(name), Channel.class, transportConfig.getChannelInjector());
configBuilder.addDependency(ChannelService.getFactoryServiceName(name), ChannelFactory.class, transportConfig.getChannelFactoryInjector());
}
addExecutorDependency(configBuilder, listenerExecutor, dependencies.getListenerExecutorInjector());
addScheduledExecutorDependency(configBuilder, evictionExecutor, dependencies.getEvictionExecutorInjector());
addScheduledExecutorDependency(configBuilder, replicationQueueExecutor, dependencies.getReplicationQueueExecutorInjector());
configBuilder.setInitialMode(ServiceController.Mode.ON_DEMAND).install();
// Install cache container service
ServiceBuilder<EmbeddedCacheManager> managerBuilder = EmbeddedCacheManagerService.build(target, name)
.addAliases(aliases)
;
if (transportConfig != null) {
managerBuilder.addDependency(ChannelService.getServiceName(name));
}
managerBuilder.setInitialMode(initialMode).install();
// Install cache container jndi binding
ServiceName serviceName = EmbeddedCacheManagerService.getServiceName(name);
ContextNames.BindInfo binding = createCacheContainerBinding(jndiName, name);
new BinderServiceBuilder(target).build(binding, serviceName, CacheContainer.class).install();
// Install key affinity service factory
KeyAffinityServiceFactoryService.build(target, name, 10).setInitialMode(ServiceController.Mode.ON_DEMAND).install();
if ((defaultCache != null) && !defaultCache.equals(CacheContainer.DEFAULT_CACHE_ALIAS)) {