}
@Override
public void start(StartContext context) throws StartException {
GlobalConfigurationBuilder builder = new GlobalConfigurationBuilder();
ClassLoader loader = this.dependencies.getClassLoader();
if (loader == null) {
loader = EmbeddedCacheManagerConfiguration.class.getClassLoader();
}
builder.classLoader(loader);
builder.shutdown().hookBehavior(ShutdownHookBehavior.DONT_REGISTER);
TransportConfiguration transport = this.dependencies.getTransportConfiguration();
TransportConfigurationBuilder transportBuilder = builder.transport();
if (transport != null) {
// See ISPN-1675
// transportBuilder.transport(new ChannelTransport(transport.getChannel()));
ChannelProvider.init(transportBuilder, transport.getChannel());
Long timeout = transport.getLockTimeout();
if (timeout != null) {
transportBuilder.distributedSyncTimeout(timeout.longValue());
}
// Topology is retrieved from the channel
Channel channel = transport.getChannel();
if(channel.getAddress() instanceof TopologyUUID) {
TopologyUUID topologyAddress = (TopologyUUID) channel.getAddress();
String site = topologyAddress.getSiteId();
if (site != null) {
transportBuilder.siteId(site);
}
String rack = topologyAddress.getRackId();
if (rack != null) {
transportBuilder.rackId(rack);
}
String machine = topologyAddress.getMachineId();
if (machine != null) {
transportBuilder.machineId(machine);
}
}
transportBuilder.clusterName(this.name);
Executor executor = transport.getExecutor();
if (executor != null) {
// See ISPN-1675
// globalBuilder.asyncTransportExecutor().factory(new ManagedExecutorFactory(executor));
ExecutorProvider.initTransportExecutor(builder, executor);
}
}
Executor listenerExecutor = this.dependencies.getListenerExecutor();
if (listenerExecutor != null) {
// See ISPN-1675
// globalBuilder.asyncListenerExecutor().factory(new ManagedExecutorFactory(listenerExecutor));
ExecutorProvider.initListenerExecutor(builder, listenerExecutor);
}
ScheduledExecutorService evictionExecutor = this.dependencies.getEvictionExecutor();
if (evictionExecutor != null) {
// See ISPN-1675
// globalBuilder.evictionScheduledExecutor().factory(new ManagedScheduledExecutorFactory(evictionExecutor));
ExecutorProvider.initEvictionExecutor(builder, evictionExecutor);
}
ScheduledExecutorService replicationQueueExecutor = this.dependencies.getReplicationQueueExecutor();
if (replicationQueueExecutor != null) {
// See ISPN-1675
// globalBuilder.replicationQueueScheduledExecutor().factory(new ManagedScheduledExecutorFactory(replicationQueueExecutor));
ExecutorProvider.initReplicationQueueExecutor(builder, replicationQueueExecutor);
}
GlobalJmxStatisticsConfigurationBuilder jmxBuilder = builder.globalJmxStatistics().cacheManagerName(this.name);
MBeanServer server = this.dependencies.getMBeanServer();
if (server != null) {
jmxBuilder.enable()
.mBeanServerLookup(new MBeanServerProvider(server))
.jmxDomain(EmbeddedCacheManagerService.getServiceName(null).getCanonicalName())
.allowDuplicateDomains(true)
;
} else {
jmxBuilder.disable();
}
this.config = builder.build();
}