Class JndiHelper
- java.lang.Object
-
- com.ibm.websphere.naming.JndiHelper
-
public class JndiHelper extends java.lang.Object
Static JNDI helper methods which can be divided into two categories:- methods for creating subcontexts, binding and rebinding objects to the name space such that intermediate contexts are automatically created if necessary. In general, the caller does not need to be concerned with NameNotFoundException or NameAlreadyBoundExceptions for intermediate contexts when using methods in this class.
- methods for normalizing hostnames for consistent use in the WebSphere NameSpace.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class and Description protected static class
JndiHelper.Operation
-
Constructor Summary
Constructors Modifier Constructor and Description protected
JndiHelper()
Protected empty constructor which prevents anyone from creating an instance of this class.
-
Method Summary
Methods Modifier and Type Method and Description protected static void
batchCreateSubcontextsDriver(WsnBatchModeContext startingContext, javax.naming.Name name)
protected static javax.naming.Context
createSubcontextsDriver(javax.naming.Context startingContext, javax.naming.Name name)
protected static javax.naming.Context
getSubcontextFromBatchResults(javax.naming.Context startingContext, java.util.Enumeration vEnum, int numCtx)
static java.lang.String
normalizeHostname(java.util.Hashtable env)
Returns a normalized form of the local hostname for consistent use in the NameSpace.static java.lang.String
normalizeHostname(java.util.Hashtable env, java.net.InetAddress ipAddress)
Returns a normalized form of the hostname represented by the ipAddress parameter for consistent use in the NameSpace.static java.lang.String
normalizeHostname(java.util.Hashtable env, java.lang.String hostname)
Returns a normalized form of the hostname parameter for consistent use in the NameSpace.static void
recursiveBind(javax.naming.Context startingContext, javax.naming.Name name, java.lang.Object obj)
Binds the object with the specified name to the name space such that all intermediate subcontexts in the name are created if they do not already exist.static void
recursiveBind(javax.naming.Context startingContext, java.lang.String name, java.lang.Object obj)
String form of therecursiveBind(Context, Name, Object)
method.static javax.naming.Context
recursiveCreateSubcontext(javax.naming.Context startingContext, javax.naming.Name name)
Creates a subcontext with the specified name such that all intermediate subcontexts in the name are created if they do not already exist.static javax.naming.Context
recursiveCreateSubcontext(javax.naming.Context startingContext, java.lang.String name)
String form of therecursiveCreateSubcontext(Context, Name)
method.static void
recursiveRebind(javax.naming.Context startingContext, javax.naming.Name name, java.lang.Object obj)
Rebinds the object with the specified name to the name space such that all intermediate subcontexts in the name are created if they do not already exist.static void
recursiveRebind(javax.naming.Context startingContext, java.lang.String name, java.lang.Object obj)
String form of therecursiveRebind(Context, Name, Object)
method.
-
-
-
Constructor Detail
-
JndiHelper
protected JndiHelper()
Protected empty constructor which prevents anyone from creating an instance of this class. This class only provides static methods, so an instance is never needed.
-
-
Method Detail
-
recursiveCreateSubcontext
public static javax.naming.Context recursiveCreateSubcontext(javax.naming.Context startingContext, java.lang.String name) throws javax.naming.NamingException
String form of therecursiveCreateSubcontext(Context, Name)
method.- Parameters:
startingContext
- The context to which the specified name is relative.name
- String form of the name of the context to create.- Returns:
- The newly created context
- Throws:
javax.naming.NotContextException
- Some object other than a context is bound to the name space with a name that conflicts with the specified name.javax.naming.NamingException
- A naming exception was encountered.- See Also:
recursiveCreateSubcontext(Context, Name)
-
recursiveCreateSubcontext
public static javax.naming.Context recursiveCreateSubcontext(javax.naming.Context startingContext, javax.naming.Name name) throws javax.naming.NamingException
Creates a subcontext with the specified name such that all intermediate subcontexts in the name are created if they do not already exist. If any subcontext cannot be created because an object other than a Context is already bound with that name, a NotContextException is thrown.- Parameters:
startingContext
- The context to which the specified name is relative.name
- The name of the context to create.- Returns:
- The newly created context.
- Throws:
javax.naming.NotContextException
- Some object other than a context is bound to the name space with a name that conflicts with the specified name.javax.naming.NamingException
- A naming exception was encountered.- See Also:
recursiveCreateSubcontext(Context, String)
-
batchCreateSubcontextsDriver
protected static void batchCreateSubcontextsDriver(WsnBatchModeContext startingContext, javax.naming.Name name) throws javax.naming.NamingException
- Throws:
javax.naming.NamingException
-
createSubcontextsDriver
protected static javax.naming.Context createSubcontextsDriver(javax.naming.Context startingContext, javax.naming.Name name) throws javax.naming.NamingException
- Throws:
javax.naming.NamingException
-
recursiveRebind
public static void recursiveRebind(javax.naming.Context startingContext, java.lang.String name, java.lang.Object obj) throws javax.naming.NamingException
String form of therecursiveRebind(Context, Name, Object)
method.- Parameters:
startingContext
- The context to which the specified name is relative.name
- String form of the name of the object to rebind.obj
- The object to rebind.- Throws:
javax.naming.NotContextException
- Some object other than a context is bound to the name space with a name that conflicts with the specified name.javax.naming.NamingException
- A naming exception was encountered.- See Also:
recursiveRebind(Context, Name, Object)
-
recursiveRebind
public static void recursiveRebind(javax.naming.Context startingContext, javax.naming.Name name, java.lang.Object obj) throws javax.naming.NamingException
Rebinds the object with the specified name to the name space such that all intermediate subcontexts in the name are created if they do not already exist. If any non-leaf component of the name identifies a bound object which is not a context, a NotContextException is thrown. If no object is already bound with the specified name, the object is bound and no exception is thrown.- Parameters:
startingContext
- The context to which the specified name is relative.name
- Name of the object to rebind.obj
- The object to rebind.- Throws:
javax.naming.NotContextException
- Some object other than a context is bound to the name space with a name that conflicts with the specified name.javax.naming.NamingException
- A naming exception was encountered.- See Also:
recursiveRebind(Context, String, Object)
-
recursiveBind
public static void recursiveBind(javax.naming.Context startingContext, java.lang.String name, java.lang.Object obj) throws javax.naming.NamingException
String form of therecursiveBind(Context, Name, Object)
method.- Parameters:
startingContext
- The context to which the specified name is relative.name
- String form of the name of the object to bind.obj
- The object to bind.- Throws:
javax.naming.NotContextException
- Some object other than a context is bound to the name space with a name that conflicts with the specified name.javax.naming.NameAlreadyBoundException
- thrown if and only if the leaf name corresponds to an already bound object. Not thrown if an intermediate context is already bound.javax.naming.NamingException
- A naming exception was encountered.- See Also:
recursiveBind(Context, Name, Object)
-
recursiveBind
public static void recursiveBind(javax.naming.Context startingContext, javax.naming.Name name, java.lang.Object obj) throws javax.naming.NamingException
Binds the object with the specified name to the name space such that all intermediate subcontexts in the name are created if they do not already exist. If any non-leaf component of the name identifies a bound object which is not a context, a NotContextException is thrown. If no object is already bound with the specified name, the object is bound and no exception is thrown. If a leaf object with the specified name is already bound, an NameAlreadyBoundException is thrown.- Parameters:
startingContext
- The context to which the specified name is relative.name
-Name
of the object to bind.obj
- The object to bind.- Throws:
javax.naming.NotContextException
- Some object other than a context is bound to the name space with a name that conflicts with the specified name.javax.naming.NameAlreadyBoundException
- thrown if and only if the leaf name corresponds to an already bound object. Not thrown if an intermediate context is already bound.javax.naming.NamingException
- A naming exception was encountered.- See Also:
recursiveBind(Context, String, Object)
-
getSubcontextFromBatchResults
protected static javax.naming.Context getSubcontextFromBatchResults(javax.naming.Context startingContext, java.util.Enumeration vEnum, int numCtx) throws javax.naming.NamingException
- Parameters:
startingContext
-vEnum
-numCtx
-- Returns:
- Throws:
javax.naming.NamingException
-
normalizeHostname
public static java.lang.String normalizeHostname(java.util.Hashtable env) throws javax.naming.NamingException
Returns a normalized form of the local hostname for consistent use in the NameSpace. The env parameter should be the result of a getEnvironment() call on a valid Context. If the env parameter is null, JndiHelper will attempt to get an initial context and use its environment. Two properties of the environment are examined:- com.ibm.websphere.naming.hostname.normalizer - contains the name of
the class to call for normalization. The class must implement the
HostnameNormalizer
interface. - com.ibm.websphere.naming.syntax - if set to "ins", the escapeDots
parameter of the HostnameNormalizer is set to
HostnameNormalizer.ESCAPE_DOTS_TRUE
.
Websphere supplies a DefaultHostnameNormalizer which operates as follows:
- attempts to get the fully qualified hostname
- converts hostname to lowercase
- if
HostnameNormalizer.ESCAPE_DOTS_TRUE
is passed, prepends all dots (".") with the escape character ("\"). This is necessary for INS syntax names. - if
HostnameNormalizer.ESCAPE_DOTS_FALSE
is passed, no special processing is done for dots
If your environment requires a different normalization algorithm, you can supply your own implementation of the HostnameNormalizer interface. You will need to set com.ibm.websphere.naming.hostname.normalizer to the name of your implementing class. It is recommended that you do this in a jndi.properties file which is in your classpath. For example set
com.ibm.websphere.naming.hostname.normalizer=com.mycompany.mySpecialHostnameNormalizer
Note that JndiHelper will cache the name of the hostname normalizer class during the first call to a normalizeHostname method, and will not examine the environment for this property on subsequent calls.
- Parameters:
env
- Hashtable containing environment properties. If null, this method will attempt to get an initial context and use its environment.- Returns:
- String containing the normalized form of the local host name.
- Throws:
javax.naming.NamingException
- Any exceptions from the HostnameNormalizer are returned to the caller.- See Also:
HostnameNormalizer
- com.ibm.websphere.naming.hostname.normalizer - contains the name of
the class to call for normalization. The class must implement the
-
normalizeHostname
public static java.lang.String normalizeHostname(java.util.Hashtable env, java.lang.String hostname) throws javax.naming.NamingException
Returns a normalized form of the hostname parameter for consistent use in the NameSpace.Please see
normalizeHostname(Hashtable)
for additional details.- Parameters:
env
- Hashtable containing environment properties. If null, this method will attempt to get an initial context and use its environment.hostname
- String containing the hostname to normalize. If null, a NamingException is thrown. If the hostname is not a known host, a NamingException is thrown with root cause of java.net.UnknownHostException.- Returns:
- String containing the normalized form of the input hostname.
- Throws:
javax.naming.NamingException
- Any exceptions from the HostnameNormalizer are returned to the caller.- See Also:
HostnameNormalizer
-
normalizeHostname
public static java.lang.String normalizeHostname(java.util.Hashtable env, java.net.InetAddress ipAddress) throws javax.naming.NamingException
Returns a normalized form of the hostname represented by the ipAddress parameter for consistent use in the NameSpace.Please see
normalizeHostname(Hashtable)
for additional details.- Parameters:
env
- Hashtable containing environment properties. If null, this method will attempt to get an initial context and use its environment.ipAddress
- java.net.InetAddress representing the hostname to normalize. If null, a NamingException is thrown.- Returns:
- String containing the normalized form of the hostname for the host represented by the input ipAddress.
- Throws:
javax.naming.NamingException
- Any exceptions from the HostnameNormalizer are returned to the caller.- See Also:
HostnameNormalizer
-
-