Package org.springframework.jndi

# Class JndiTemplate

java.lang.Object
org.springframework.jndi.JndiTemplate

public class JndiTemplate extends 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<T>)`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final org.apache.commons.logging.Log`
`logger`

## Constructor Summary

Constructors
Constructor
Description
`JndiTemplate()`
Create a new JndiTemplate instance.
`JndiTemplate(Properties environment)`
Create a new JndiTemplate instance, using the given environment.

## Method Summary

Modifier and Type
Method
Description
`void`
`bind(String name, Object object)`
Bind the given object to the current JNDI context, using the given name.
`protected Context`
`createInitialContext()`
Create a new JNDI initial context.
`<T> T`
`execute(JndiCallback<T> contextCallback)`
Execute the given JNDI context callback implementation.
`Context`
`getContext()`
Obtain a JNDI context corresponding to this template's configuration.
`Properties`
`getEnvironment()`
Return the environment for the JNDI InitialContext, if any.
`Object`
`lookup(String name)`
Look up the object with the given name in the current JNDI context.
`<T> T`
`lookup(String name, Class<T> requiredType)`
Look up the object with the given name in the current JNDI context.
`void`
`rebind(String name, Object object)`
Rebind the given object to the current JNDI context, using the given name.
`void`
`releaseContext(Context ctx)`
Release a JNDI context as obtained from `getContext()`.
`void`
`setEnvironment(Properties environment)`
Set the environment for the JNDI InitialContext.
`void`
`unbind(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 Details

### logger

protected final org.apache.commons.logging.Log logger

## Constructor Details

### JndiTemplate

public JndiTemplate()
Create a new JndiTemplate instance.

### JndiTemplate

public JndiTemplate(@Nullable Properties environment)
Create a new JndiTemplate instance, using the given environment.

## Method Details

### setEnvironment

public void setEnvironment(@Nullable Properties environment)
Set the environment for the JNDI InitialContext.

### getEnvironment

@Nullable public Properties getEnvironment()
Return the environment for the JNDI InitialContext, if any.

### execute

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

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

### getContext

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

The default implementation delegates to `createInitialContext()`.

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

### releaseContext

public void releaseContext(@Nullable 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 Context createInitialContext() throws 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, for example, for testing.

Returns:
  the initial Context instance
Throws:
  `NamingException` - in case of initialization errors

### lookup

public Object lookup(String name) throws 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:
  `NamingException` - if there is no object with the given name bound to JNDI

### lookup

public <T> T lookup(String name, @Nullable Class<T> requiredType) throws 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:
  `NamingException` - if there is no object with the given name bound to JNDI

### bind

public void bind(String name, Object object) throws 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:
  `NamingException` - thrown by JNDI, mostly name already bound

### rebind

public void rebind(String name, Object object) throws 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:
  `NamingException` - thrown by JNDI

### unbind

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

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