summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-04-25 21:41:38 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-04-25 21:41:38 +0000
commit1ee016a4caf936528e66b210323097499ac6aca7 (patch)
tree69e1cbf966aca5903a97c1c880f6927074a32514 /sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src
parent5b5d5522eb45a8c334f273ce72bfd8bbfa94944c (diff)
Update hazelcast registry to use runtime properties
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@937891 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src')
-rw-r--r--sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/client/HazelcastClientEndpointRegistry.java52
1 files changed, 48 insertions, 4 deletions
diff --git a/sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/client/HazelcastClientEndpointRegistry.java b/sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/client/HazelcastClientEndpointRegistry.java
index 5bd06e66b8..3ab62d2936 100644
--- a/sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/client/HazelcastClientEndpointRegistry.java
+++ b/sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/client/HazelcastClientEndpointRegistry.java
@@ -19,10 +19,18 @@
package org.apache.tuscany.sca.endpoint.hazelcast.client;
+import java.net.BindException;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.ServerSocket;
+import java.util.Enumeration;
import java.util.Map;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
import org.apache.tuscany.sca.endpoint.hazelcast.HazelcastEndpointRegistry;
+import org.apache.tuscany.sca.endpoint.hazelcast.RegistryConfig;
+import org.apache.tuscany.sca.runtime.RuntimeProperties;
import com.hazelcast.client.HazelcastClient;
import com.hazelcast.core.HazelcastInstance;
@@ -47,8 +55,8 @@ public class HazelcastClientEndpointRegistry extends HazelcastEndpointRegistry {
throw new IllegalStateException("The registry has already been started");
}
initHazelcastClientInstance();
- endpointMap = hazelcastClient.getMap(configURI.getDomainName() + "/Endpoints");
- endpointOwners = hazelcastClient.getMultiMap(configURI.getDomainName() + "/EndpointOwners");
+ endpointMap = hazelcastClient.getMap(domainURI + "/Endpoints");
+ endpointOwners = hazelcastClient.getMultiMap(domainURI + "/EndpointOwners");
}
@Override
@@ -61,10 +69,18 @@ public class HazelcastClientEndpointRegistry extends HazelcastEndpointRegistry {
}
private void initHazelcastClientInstance() {
- if (configURI.getRemotes().size() < 1) {
+ this.properties = registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(RuntimeProperties.class).getProperties();
+ RegistryConfig rc = new RegistryConfig(properties);
+ if (rc.getWKAs().size() < 1) {
+ String ip = getDefaultWKA();
+ if (ip != null) {
+ rc.getWKAs().add(ip);
+ }
+ }
+ if (rc.getWKAs().size() < 1) {
throw new IllegalArgumentException("Must specify remote IP address(es) for domain");
}
- this.hazelcastClient = HazelcastClient.newHazelcastClient(configURI.getDomainName(), configURI.getPassword(), configURI.getRemotes().toArray(new String[0]));
+ this.hazelcastClient = HazelcastClient.newHazelcastClient(rc.getUserid(), rc.getPassword(), rc.getWKAs().toArray(new String[0]));
}
@Override
@@ -72,4 +88,32 @@ public class HazelcastClientEndpointRegistry extends HazelcastEndpointRegistry {
return hazelcastClient;
}
+ /**
+ * See if there's a local IP listening on port 14820
+ */
+ protected static String getDefaultWKA() {
+ try {
+ Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
+ while (nis.hasMoreElements()) {
+ NetworkInterface ni = nis.nextElement();
+ Enumeration<InetAddress> ips = ni.getInetAddresses();
+ while (ips.hasMoreElements()) {
+ InetAddress addr = ips.nextElement();
+ ServerSocket ss = null;
+ try {
+ ss = new ServerSocket(14820, 0, addr);
+ } catch (BindException e) {
+ return addr.getHostAddress() + ":14820";
+ } finally {
+ if (ss != null) {
+ ss.close();
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ }
+ return null;
+ }
+
}