org.springframework.jndi
Class JndiTemplate

java.lang.Object
  extended by org.springframework.jndi.JndiTemplate
Direct Known Subclasses:
ExpectedLookupTemplate

public class JndiTemplate
extends java.lang.Object

Helper class that simplifies JNDI operations. It provides methods to lookup and bind objects, and allows implementations of the JndiCallback interface to perform any operation they like with a JNDI naming context provided.

Author:
Rod Johnson, Juergen Hoeller
See Also:
JndiCallback, execute(org.springframework.jndi.JndiCallback)

Field Summary
private  java.util.Properties environment
           
protected  Log logger
           
 
Constructor Summary
JndiTemplate()
          Create a new JndiTemplate instance.
JndiTemplate(java.util.Properties environment)
          Create a new JndiTemplate instance, using the given environment.
 
Method Summary
 void bind(java.lang.String name, java.lang.Object object)
          Bind the given object to the current JNDI context, using the given name.
protected  javax.naming.Context createInitialContext()
          Create a new JNDI initial context.
<T> T
execute(JndiCallback<T> contextCallback)
          Execute the given JNDI context callback implementation.
 javax.naming.Context getContext()
          Obtain a JNDI context corresponding to this template's configuration.
 java.util.Properties getEnvironment()
          Return the environment for the JNDI InitialContext, if any.
 java.lang.Object lookup(java.lang.String name)
          Look up the object with the given name in the current JNDI context.
<T> T
lookup(java.lang.String name, java.lang.Class<T> requiredType)
          Look up the object with the given name in the current JNDI context.
 void rebind(java.lang.String name, java.lang.Object object)
          Rebind the given object to the current JNDI context, using the given name.
 void releaseContext(javax.naming.Context ctx)
          Release a JNDI context as obtained from getContext().
 void setEnvironment(java.util.Properties environment)
          Set the environment for the JNDI InitialContext.
 void unbind(java.lang.String name)
          Remove the binding for the given name from the current JNDI context.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected final Log logger

environment

private java.util.Properties environment
Constructor Detail

JndiTemplate

public JndiTemplate()
Create a new JndiTemplate instance.


JndiTemplate

public JndiTemplate(java.util.Properties environment)
Create a new JndiTemplate instance, using the given environment.

Method Detail

setEnvironment

public void setEnvironment(java.util.Properties environment)
Set the environment for the JNDI InitialContext.


getEnvironment

public java.util.Properties getEnvironment()
Return the environment for the JNDI InitialContext, if any.


execute

public <T> T execute(JndiCallback<T> contextCallback)
          throws javax.naming.NamingException
Execute the given JNDI context callback implementation.

Parameters:
contextCallback - JndiCallback implementation
Returns:
a result object returned by the callback, or null
Throws:
javax.naming.NamingException - thrown by the callback implementation
See Also:
createInitialContext()

getContext

public javax.naming.Context getContext()
                                throws javax.naming.NamingException
Obtain a JNDI context corresponding to this template's configuration. Called by execute(org.springframework.jndi.JndiCallback); may also be called directly.

The default implementation delegates to createInitialContext().

Returns:
the JNDI context (never null)
Throws:
javax.naming.NamingException - if context retrieval failed
See Also:
releaseContext(javax.naming.Context)

releaseContext

public void releaseContext(javax.naming.Context ctx)
Release a JNDI context as obtained from getContext().

Parameters:
ctx - the JNDI context to release (may be null)
See Also:
getContext()

createInitialContext

protected javax.naming.Context createInitialContext()
                                             throws javax.naming.NamingException
Create a new JNDI initial context. Invoked by getContext().

The default implementation use this template's environment settings. Can be subclassed for custom contexts, e.g. for testing.

Returns:
the initial Context instance
Throws:
javax.naming.NamingException - in case of initialization errors

lookup

public java.lang.Object lookup(java.lang.String name)
                        throws javax.naming.NamingException
Look up the object with the given name in the current JNDI context.

Parameters:
name - the JNDI name of the object
Returns:
object found (cannot be null; if a not so well-behaved JNDI implementations returns null, a NamingException gets thrown)
Throws:
javax.naming.NamingException - if there is no object with the given name bound to JNDI

lookup

public <T> T lookup(java.lang.String name,
                    java.lang.Class<T> requiredType)
         throws javax.naming.NamingException
Look up the object with the given name in the current JNDI context.

Parameters:
name - the JNDI name of the object
requiredType - type the JNDI object must match. Can be an interface or superclass of the actual class, or null for any match. For example, if the value is Object.class, this method will succeed whatever the class of the returned instance.
Returns:
object found (cannot be null; if a not so well-behaved JNDI implementations returns null, a NamingException gets thrown)
Throws:
javax.naming.NamingException - if there is no object with the given name bound to JNDI

bind

public void bind(java.lang.String name,
                 java.lang.Object object)
          throws javax.naming.NamingException
Bind the given object to the current JNDI context, using the given name.

Parameters:
name - the JNDI name of the object
object - the object to bind
Throws:
javax.naming.NamingException - thrown by JNDI, mostly name already bound

rebind

public void rebind(java.lang.String name,
                   java.lang.Object object)
            throws javax.naming.NamingException
Rebind the given object to the current JNDI context, using the given name. Overwrites any existing binding.

Parameters:
name - the JNDI name of the object
object - the object to rebind
Throws:
javax.naming.NamingException - thrown by JNDI

unbind

public void unbind(java.lang.String name)
            throws javax.naming.NamingException
Remove the binding for the given name from the current JNDI context.

Parameters:
name - the JNDI name of the object
Throws:
javax.naming.NamingException - thrown by JNDI, mostly name not found