lookupAttrs = baseAttrs;
}
}
/* fetch remaining config entries */
MethodConstraints discoveryConstraints =
(MethodConstraints) config.getEntry(COMPONENT,
"discoveryConstraints",
MethodConstraints.class, null);
if (discoveryConstraints == null) {
discoveryConstraints =
new BasicMethodConstraints(InvocationConstraints.EMPTY);
}
try {
discoer = (DiscoveryManagement) config.getEntry(
COMPONENT, "discoveryManager", DiscoveryManagement.class);
} catch (NoSuchEntryException e) {
discoer = new LookupDiscoveryManager(
DiscoveryGroupManagement.NO_GROUPS, null, null, config);
}
listenerPreparer = (ProxyPreparer) Config.getNonNullEntry(
config, COMPONENT, "listenerPreparer", ProxyPreparer.class,
listenerPreparer);
locatorPreparer = (ProxyPreparer) Config.getNonNullEntry(
config, COMPONENT, "locatorPreparer", ProxyPreparer.class,
locatorPreparer);
minMaxEventLease = Config.getLongEntry(
config, COMPONENT, "minMaxEventLease",
minMaxEventLease, 1, MAX_LEASE);
minMaxServiceLease = Config.getLongEntry(
config, COMPONENT, "minMaxServiceLease",
minMaxServiceLease, 1, MAX_LEASE);
minRenewalInterval = Config.getLongEntry(
config, COMPONENT, "minRenewalInterval",
minRenewalInterval, 0, MAX_RENEW);
multicastAnnouncementInterval = Config.getLongEntry(
config, COMPONENT, "multicastAnnouncementInterval",
multicastAnnouncementInterval, 1, Long.MAX_VALUE);
multicastInterfaceRetryInterval = Config.getIntEntry(
config, COMPONENT, "multicastInterfaceRetryInterval",
multicastInterfaceRetryInterval, 1, Integer.MAX_VALUE);
try {
multicastInterfaces = (NetworkInterface[]) config.getEntry(
COMPONENT, "multicastInterfaces", NetworkInterface[].class);
multicastInterfacesSpecified = true;
} catch (NoSuchEntryException e) {
Enumeration en = NetworkInterface.getNetworkInterfaces();
List l = (en != null) ?
Collections.list(en) : Collections.EMPTY_LIST;
multicastInterfaces = (NetworkInterface[])
l.toArray(new NetworkInterface[l.size()]);
multicastInterfacesSpecified = false;
}
if (multicastInterfaces == null) {
logger.config("using system default interface for multicast");
} else if (multicastInterfaces.length == 0) {
if (multicastInterfacesSpecified) {
logger.config("multicast disabled");
} else {
logger.severe("no network interfaces detected");
}
} else if (logger.isLoggable(Level.CONFIG)) {
logger.log(Level.CONFIG, "multicasting on interfaces {0}",
new Object[]{ Arrays.asList(multicastInterfaces) });
}
try {
multicastRequestSubjectChecker =
(ClientSubjectChecker) Config.getNonNullEntry(
config, COMPONENT, "multicastRequestSubjectChecker",
ClientSubjectChecker.class);
} catch (NoSuchEntryException e) {
// leave null
}
resourceIdGenerator = (UuidGenerator) Config.getNonNullEntry(
config, COMPONENT, "resourceIdGenerator", UuidGenerator.class,
resourceIdGenerator);
serviceIdGenerator = (UuidGenerator) Config.getNonNullEntry(
config, COMPONENT, "serviceIdGenerator", UuidGenerator.class,
serviceIdGenerator);
tasker = (TaskManager) Config.getNonNullEntry(
config, COMPONENT, "taskManager", TaskManager.class,
new TaskManager(50, 1000 * 15, 1.0F));
unexportTimeout = Config.getLongEntry(
config, COMPONENT, "unexportTimeout", unexportTimeout,
0, Long.MAX_VALUE);
unexportWait = Config.getLongEntry(
config, COMPONENT, "unexportWait", unexportWait,
0, Long.MAX_VALUE);
String unicastDiscoveryHost;
try {
unicastDiscoveryHost = (String) Config.getNonNullEntry(
config, COMPONENT, "unicastDiscoveryHost", String.class);
} catch (NoSuchEntryException e) {
// fix for 4906732: only invoke getCanonicalHostName if needed
unicastDiscoveryHost =
InetAddress.getLocalHost().getCanonicalHostName();
}
try {
unicastDiscoverySubjectChecker =
(ClientSubjectChecker) Config.getNonNullEntry(
config, COMPONENT, "unicastDiscoverySubjectChecker",
ClientSubjectChecker.class);
} catch (NoSuchEntryException e) {
// leave null
}
/* initialize state based on recovered/configured values */
objectServiceType = new ServiceType(Object.class, null, null);
computeMaxLeases();
protocol2 = Discovery.getProtocol2(null);
/* cache unprocessed unicastDiscovery constraints to handle
reprocessing of time constraints associated with that method */
rawUnicastDiscoveryConstraints = discoveryConstraints.getConstraints(
DiscoveryConstraints.unicastDiscoveryMethod);
multicastRequestConstraints = DiscoveryConstraints.process(
discoveryConstraints.getConstraints(
DiscoveryConstraints.multicastRequestMethod));
multicastAnnouncementConstraints = DiscoveryConstraints.process(
discoveryConstraints.getConstraints(
DiscoveryConstraints.multicastAnnouncementMethod));
unicastDiscoveryConstraints = DiscoveryConstraints.process(
rawUnicastDiscoveryConstraints);
serviceExpirer = new ServiceExpireThread();
eventExpirer = new EventExpireThread();