[jboss-cvs] JBossAS SVN: r83195 - in projects/naming/branches/Branch_5_0: jnpclient/.settings and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jan 21 20:57:35 EST 2009
Author: scott.stark at jboss.org
Date: 2009-01-21 20:57:35 -0500 (Wed, 21 Jan 2009)
New Revision: 83195
Modified:
projects/naming/branches/Branch_5_0/jnpclient/.classpath
projects/naming/branches/Branch_5_0/jnpclient/.settings/org.eclipse.jdt.core.prefs
projects/naming/branches/Branch_5_0/jnpserver/.classpath
projects/naming/branches/Branch_5_0/jnpserver/.settings/org.eclipse.jdt.core.prefs
projects/naming/branches/Branch_5_0/jnpserver/src/main/java/org/jnp/interfaces/NamingContext.java
Log:
JBAS-6390, JBNAME-25, add support for allowing IPv6 provider urls
Modified: projects/naming/branches/Branch_5_0/jnpclient/.classpath
===================================================================
--- projects/naming/branches/Branch_5_0/jnpclient/.classpath 2009-01-22 01:50:35 UTC (rev 83194)
+++ projects/naming/branches/Branch_5_0/jnpclient/.classpath 2009-01-22 01:57:35 UTC (rev 83195)
@@ -1,6 +1,6 @@
<classpath>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.7.GA/jboss-common-core-2.2.7.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-common-core/2.2.7.GA/jboss-common-core-2.2.7.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.10.GA/jboss-common-core-2.2.10.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-common-core/2.2.10.GA/jboss-common-core-2.2.10.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA-sources.jar"/>
</classpath>
\ No newline at end of file
Modified: projects/naming/branches/Branch_5_0/jnpclient/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- projects/naming/branches/Branch_5_0/jnpclient/.settings/org.eclipse.jdt.core.prefs 2009-01-22 01:50:35 UTC (rev 83194)
+++ projects/naming/branches/Branch_5_0/jnpclient/.settings/org.eclipse.jdt.core.prefs 2009-01-22 01:57:35 UTC (rev 83195)
@@ -1,5 +1,5 @@
-#Tue Nov 18 17:16:09 CET 2008
+#Wed Jan 21 17:52:18 PST 2009
+eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
Modified: projects/naming/branches/Branch_5_0/jnpserver/.classpath
===================================================================
--- projects/naming/branches/Branch_5_0/jnpserver/.classpath 2009-01-22 01:50:35 UTC (rev 83194)
+++ projects/naming/branches/Branch_5_0/jnpserver/.classpath 2009-01-22 01:57:35 UTC (rev 83195)
@@ -4,26 +4,28 @@
<classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.0.2/activation-1.0.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1.1/activation-1.1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-junit/1.7.0/ant-junit-1.7.0.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"/>
<classpathentry kind="var" path="M2_REPO/wutka-dtdparser/dtdparser121/1.2.1/dtdparser121-1.2.1.jar"/>
<classpathentry kind="var" path="M2_REPO/sun-jaxb/jaxb-api/2.1.4/jaxb-api-2.1.4.jar" sourcepath="M2_REPO/sun-jaxb/jaxb-api/2.1.4/jaxb-api-2.1.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.8.GA/jboss-common-core-2.2.8.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-common-core/2.2.8.GA/jboss-common-core-2.2.8.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-dependency/2.0.0.CR2/jboss-dependency-2.0.0.CR2.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-dependency/2.0.0.CR2/jboss-dependency-2.0.0.CR2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-kernel/2.0.0.CR2/jboss-kernel-2.0.0.CR2.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-kernel/2.0.0.CR2/jboss-kernel-2.0.0.CR2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.10.GA/jboss-common-core-2.2.10.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-common-core/2.2.10.GA/jboss-common-core-2.2.10.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-dependency/2.0.0.CR5/jboss-dependency-2.0.0.CR5.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-dependency/2.0.0.CR5/jboss-dependency-2.0.0.CR5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-kernel/2.0.0.CR5/jboss-kernel-2.0.0.CR5.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-kernel/2.0.0.CR5/jboss-kernel-2.0.0.CR5-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/man/jboss-managed/2.0.0.CR1/jboss-managed-2.0.0.CR1.jar" sourcepath="M2_REPO/org/jboss/man/jboss-managed/2.0.0.CR1/jboss-managed-2.0.0.CR1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-mdr/2.0.0.CR3/jboss-mdr-2.0.0.CR3.jar" sourcepath="M2_REPO/org/jboss/jboss-mdr/2.0.0.CR3/jboss-mdr-2.0.0.CR3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/man/jboss-metatype/2.0.0.CR1/jboss-metatype-2.0.0.CR1.jar" sourcepath="M2_REPO/org/jboss/man/jboss-metatype/2.0.0.CR1/jboss-metatype-2.0.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-mdr/2.0.1.GA/jboss-mdr-2.0.1.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-mdr/2.0.1.GA/jboss-mdr-2.0.1.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/jboss/profiler/jvmti/jboss-profiler-jvmti/1.0.0.CR5/jboss-profiler-jvmti-1.0.0.CR5.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-reflect/2.0.0.CR1/jboss-reflect-2.0.0.CR1.jar" sourcepath="M2_REPO/org/jboss/jboss-reflect/2.0.0.CR1/jboss-reflect-2.0.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-reflect/2.0.0.GA/jboss-reflect-2.0.0.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-reflect/2.0.0.GA/jboss-reflect-2.0.0.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.1.GA/jboss-server-manager-0.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.1.GA/jboss-server-manager-0.1.1.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/test/jboss-test/1.1.1.GA/jboss-test-1.1.1.GA.jar" sourcepath="M2_REPO/org/jboss/test/jboss-test/1.1.1.GA/jboss-test-1.1.1.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jboss/jbossxb/2.0.0.CR13/jbossxb-2.0.0.CR13.jar" sourcepath="M2_REPO/org/jboss/jbossxb/2.0.0.CR13/jbossxb-2.0.0.CR13-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossxb/2.0.0.GA/jbossxb-2.0.0.GA.jar" sourcepath="M2_REPO/org/jboss/jbossxb/2.0.0.GA/jbossxb-2.0.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.2/junit-3.8.2.jar" sourcepath="M2_REPO/junit/junit/3.8.2/junit-3.8.2-sources.jar">
+ <attributes>
+ <attribute value="jar:file:/Users/svn/repository.jboss.org/maven2/junit/junit/3.8.2/junit-3.8.2-javadoc.jar!/" name="javadoc_location"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="var" path="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14.jar" sourcepath="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/apache-xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
<classpathentry kind="var" path="M2_REPO/apache-xerces/xml-apis/2.9.1/xml-apis-2.9.1.jar"/>
Modified: projects/naming/branches/Branch_5_0/jnpserver/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- projects/naming/branches/Branch_5_0/jnpserver/.settings/org.eclipse.jdt.core.prefs 2009-01-22 01:50:35 UTC (rev 83194)
+++ projects/naming/branches/Branch_5_0/jnpserver/.settings/org.eclipse.jdt.core.prefs 2009-01-22 01:57:35 UTC (rev 83195)
@@ -1,5 +1,5 @@
-#Tue Nov 18 17:16:09 CET 2008
+#Wed Jan 21 17:52:18 PST 2009
+eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
Modified: projects/naming/branches/Branch_5_0/jnpserver/src/main/java/org/jnp/interfaces/NamingContext.java
===================================================================
--- projects/naming/branches/Branch_5_0/jnpserver/src/main/java/org/jnp/interfaces/NamingContext.java 2009-01-22 01:50:35 UTC (rev 83194)
+++ projects/naming/branches/Branch_5_0/jnpserver/src/main/java/org/jnp/interfaces/NamingContext.java 2009-01-22 01:57:35 UTC (rev 83195)
@@ -49,6 +49,8 @@
import java.util.Hashtable;
import java.util.Iterator;
import java.util.StringTokenizer;
+import java.util.concurrent.ConcurrentHashMap;
+
import javax.naming.Binding;
import javax.naming.CannotProceedException;
import javax.naming.CommunicationException;
@@ -176,7 +178,7 @@
// Static --------------------------------------------------------
/** HAJNDI keyed by partition name */
- private static Hashtable haServers = new Hashtable();
+ private static Hashtable<String, Naming> haServers = new Hashtable<String, Naming>();
private static RuntimePermission GET_HA_NAMING_SERVER = new RuntimePermission("org.jboss.naming.NamingContext.getHANamingServerForPartition");
private static RuntimePermission SET_HA_NAMING_SERVER = new RuntimePermission("org.jboss.naming.NamingContext.setHANamingServerForPartition");
public static void setHANamingServerForPartition(String partitionName, Naming haServer)
@@ -212,6 +214,8 @@
private static Naming localServer;
private static RuntimePermission GET_LOCAL_SERVER = new RuntimePermission("org.jboss.naming.NamingContext.getLocal");
private static RuntimePermission SET_LOCAL_SERVER = new RuntimePermission("org.jboss.naming.NamingContext.setLocal");
+ private static int HOST_INDEX = 0;
+ private static int PORT_INDEX = 1;
// Attributes ----------------------------------------------------
Naming naming;
@@ -228,14 +232,30 @@
// calls, which will improve performance.
// Weak references are used so if no contexts use a particular server
// it will be removed from the cache.
- static HashMap cachedServers = new HashMap();
+ static ConcurrentHashMap<InetSocketAddress, WeakReference<Naming>> cachedServers
+ = new ConcurrentHashMap<InetSocketAddress, WeakReference<Naming>>();
+ /**
+ * @deprecated use {@link #addServer(InetSocketAddress, Naming)}
+ * @param name
+ * @param server
+ */
static void addServer(String name, Naming server)
{
+ Object[] hostAndPort = {name, 0};
+ parseHostPort(name, hostAndPort, 0);
+ String host = (String) hostAndPort[HOST_INDEX];
+ Integer port = (Integer) hostAndPort[PORT_INDEX];
+ InetSocketAddress addr = new InetSocketAddress(host, port);
+ addServer(addr, server);
+ }
+ static void addServer(InetSocketAddress addr, Naming server)
+ {
// Add server to map
synchronized (NamingContext.class)
{
- cachedServers.put(name, new WeakReference(server));
+ WeakReference<Naming> ref = new WeakReference<Naming>(server);
+ cachedServers.put(addr, ref);
}
}
@@ -243,8 +263,8 @@
throws NamingException
{
// Check the server cache for a host:port entry
- String hostKey = host + ":" + port;
- WeakReference ref = (WeakReference) cachedServers.get(hostKey);
+ InetSocketAddress key = new InetSocketAddress(host, port);
+ WeakReference<Naming> ref = cachedServers.get(key);
Naming server;
if (ref != null)
{
@@ -253,7 +273,7 @@
{
// JBAS-4622. Ensure the env for the request has the
// hostKey so we can remove the cache entry if there is a failure
- serverEnv.put("hostKey", hostKey);
+ serverEnv.put("hostKey", key);
return server;
}
}
@@ -278,7 +298,7 @@
}
catch (IOException e)
{
- NamingException ex = new ServiceUnavailableException("Failed to connect to server " + hostKey);
+ NamingException ex = new ServiceUnavailableException("Failed to connect to server " + key);
ex.setRootCause(e);
throw ex;
}
@@ -291,24 +311,24 @@
s.close();
// Add it to cache
- addServer(hostKey, server);
- serverEnv.put("hostKey", hostKey);
+ addServer(key, server);
+ serverEnv.put("hostKey", key);
return server;
}
catch (IOException e)
{
if(log.isTraceEnabled())
- log.trace("Failed to retrieve stub from server " + hostKey, e);
- NamingException ex = new CommunicationException("Failed to retrieve stub from server " + hostKey);
+ log.trace("Failed to retrieve stub from server " + key, e);
+ NamingException ex = new CommunicationException("Failed to retrieve stub from server " + key);
ex.setRootCause(e);
throw ex;
}
catch (Exception e)
{
if(log.isTraceEnabled())
- log.trace("Failed to connect server " + hostKey, e);
- NamingException ex = new CommunicationException("Failed to connect to server " + hostKey);
+ log.trace("Failed to connect server " + key, e);
+ NamingException ex = new CommunicationException("Failed to connect to server " + key);
ex.setRootCause(e);
throw ex;
}
@@ -376,28 +396,17 @@
String server = parseNameForScheme(urlAsName, null);
if (server != null)
url = server;
- int colon = url.indexOf(':');
- if (colon < 0)
- {
- host = url.trim();
- }
- else
- {
- host = url.substring(0, colon).trim();
- try
- {
- port = Integer.parseInt(url.substring(colon + 1).trim());
- }
- catch (Exception ex)
- {
- // Use default;
- }
- }
+
+ Object[] hostAndPort = {url, 1099};
+ parseHostPort(url, hostAndPort, 1099);
+ host = (String) hostAndPort[HOST_INDEX];
+ port = (Integer) hostAndPort[PORT_INDEX];
// Remove server from map
synchronized (NamingContext.class)
{
- cachedServers.remove(host + ":" + port);
+ InetSocketAddress key = new InetSocketAddress(host, port);
+ cachedServers.remove(key);
}
}
catch (NamingException ignored)
@@ -1614,11 +1623,12 @@
String serverHost;
int serverPort;
- int colon = myServer.indexOf(':');
- if (colon >= 0)
+ Object[] hostAndPort = {myServer, 0};
+ parseHostPort(myServer, hostAndPort, DEFAULT_DISCOVERY_GROUP_PORT);
+ serverHost = (String) hostAndPort[HOST_INDEX];
+ serverPort = (Integer) hostAndPort[PORT_INDEX];
+ if (serverHost != null)
{
- serverHost = myServer.substring(0, colon);
- serverPort = Integer.valueOf(myServer.substring(colon + 1)).intValue();
server = getServer(serverHost, serverPort, serverEnv);
}
return server;
@@ -1675,23 +1685,11 @@
String server = parseNameForScheme(urlAsName, null);
if (server != null)
url = server;
- int colon = url.indexOf(':');
- if (colon < 0)
- {
- host = url;
- }
- else
- {
- host = url.substring(0, colon).trim();
- try
- {
- port = Integer.parseInt(url.substring(colon + 1).trim());
- }
- catch (Exception ex)
- {
- // Use default;
- }
- }
+ //
+ Object[] hostAndPort = {url, 0};
+ parseHostPort(url, hostAndPort, 1099);
+ host = (String) hostAndPort[HOST_INDEX];
+ port = (Integer) hostAndPort[PORT_INDEX];
try
{
// Get server from cache
@@ -1766,6 +1764,48 @@
}
}
+ /**
+ * Parse a naming provider url for the host/port information
+ * @param url - the naming provider url string to parse
+ * @param output, [0] = the host name/address, [1] = the parsed port as an Integer
+ * @param defaultPort - the default port to return in output[1] if no port
+ * was seen in the url string.
+ * @return the index of the port separator if found, -1 otherwise.
+ */
+ static private int parseHostPort(String url, Object[] output, int defaultPort)
+ {
+ // First look for a @ separating the host and port
+ int colon = url.indexOf('@');
+ if(colon < 0)
+ {
+ // If there are multiple ':' assume its an IPv6 address
+ colon = url.lastIndexOf(':');
+ int firstColon = url.indexOf(':');
+ if(colon > firstColon)
+ colon = -1;
+ }
+
+ if(colon < 0)
+ {
+ output[HOST_INDEX] = url;
+ output[PORT_INDEX] = new Integer(defaultPort);
+ }
+ else
+ {
+ output[HOST_INDEX] = url.substring(0, colon);
+ try
+ {
+ output[PORT_INDEX] = Integer.parseInt(url.substring(colon+1).trim());
+ }
+ catch (Exception ex)
+ {
+ // Use default port
+ output[PORT_INDEX] = new Integer(defaultPort);
+ }
+ }
+ return colon;
+ }
+
private Name getAbsoluteName(Name n)
throws NamingException
{
More information about the jboss-cvs-commits
mailing list