void deactivate() {
deactivateComponent();
}
private void activateInternal() {
RuntimeProperties sysprops = runtimeProperties.get();
runtimeIdentity = sysprops.getRuntimeIdentity();
String version = sysprops.getProperty("fabric.version", ZkDefs.DEFAULT_VERSION);
String profiles = sysprops.getProperty("fabric.profiles");
try {
server = getServer();
if (profiles != null) {
String versionNode = CONFIG_CONTAINER.getPath(runtimeIdentity);
String profileNode = CONFIG_VERSIONS_CONTAINER.getPath(version, runtimeIdentity);
ZooKeeperUtils.createDefault(curator.get(), versionNode, version);
ZooKeeperUtils.createDefault(curator.get(), profileNode, profiles);
}
checkAlive();
String domainsNode = CONTAINER_DOMAINS.getPath(runtimeIdentity);
Stat stat = ZooKeeperUtils.exists(curator.get(), domainsNode);
if (stat != null) {
ZooKeeperUtils.deleteSafe(curator.get(), domainsNode);
}
ZooKeeperUtils.createDefault(curator.get(), CONTAINER_BINDADDRESS.getPath(runtimeIdentity), bootstrapConfiguration.get().getBindAddress());
ZooKeeperUtils.createDefault(curator.get(), CONTAINER_RESOLVER.getPath(runtimeIdentity), getContainerResolutionPolicy(curator.get(), runtimeIdentity));
ZooKeeperUtils.setData(curator.get(), CONTAINER_LOCAL_HOSTNAME.getPath(runtimeIdentity), HostUtils.getLocalHostName());
ZooKeeperUtils.setData(curator.get(), CONTAINER_LOCAL_IP.getPath(runtimeIdentity), HostUtils.getLocalIp());
ZooKeeperUtils.setData(curator.get(), CONTAINER_IP.getPath(runtimeIdentity), getContainerPointer(curator.get(), runtimeIdentity));
//Check if there are addresses specified as system properties and use them if there is not an existing value in the registry.
//Mostly usable for adding values when creating containers without an existing ensemble.
for (String resolver : ZkDefs.VALID_RESOLVERS) {
String address = String.valueOf(bootstrapConfiguration.get().getConfiguration().get(resolver));
if (address != null && !address.isEmpty() && exists(curator.get(), CONTAINER_ADDRESS.getPath(runtimeIdentity, resolver)) == null) {
setData(curator.get(), CONTAINER_ADDRESS.getPath(runtimeIdentity, resolver), address);
}
}
ip = getSubstitutedData(curator.get(), getContainerPointer(curator.get(), runtimeIdentity));
setData(curator.get(), CONTAINER_IP.getPath(runtimeIdentity), ip);
createDefault(curator.get(), CONTAINER_GEOLOCATION.getPath(runtimeIdentity), geoLocationService.get().getGeoLocation());
//Check if there are addresses specified as system properties and use them if there is not an existing value in the registry.
//Mostly usable for adding values when creating containers without an existing ensemble.
for (String resolver : ZkDefs.VALID_RESOLVERS) {
String address = sysprops.getProperty(resolver);
if (address != null && !address.isEmpty() && ZooKeeperUtils.exists(curator.get(), CONTAINER_ADDRESS.getPath(runtimeIdentity, resolver)) == null) {
ZooKeeperUtils.setData(curator.get(), CONTAINER_ADDRESS.getPath(runtimeIdentity, resolver), address);
}
}
//We are creating a dummy container object, since this might be called before the actual container is ready.
Container current = new ImmutableContainerBuilder().id(runtimeIdentity).ip(ip).build();
//Read all tomcat connectors
initializeConnectors();
registerHttp(current);
//Set the port range values
String minimumPort = sysprops.getProperty(ZkDefs.MINIMUM_PORT);
String maximumPort = sysprops.getProperty(ZkDefs.MAXIMUM_PORT);
ZooKeeperUtils.createDefault(curator.get(), CONTAINER_PORT_MIN.getPath(runtimeIdentity), minimumPort);
ZooKeeperUtils.createDefault(curator.get(), CONTAINER_PORT_MAX.getPath(runtimeIdentity), maximumPort);
} catch (Exception e) {
LOGGER.warn("Error updating Fabric Container information. This exception will be ignored.", e);
}