Package org.springframework.jndi
Class JndiTemplate
- java.lang.Object
- org.springframework.jndi.JndiTemplate
- Direct Known Subclasses:
ExpectedLookupTemplate
public class JndiTemplate extends Object
Helper class that simplifies JNDI operations. It provides methods to lookup and bind objects, and allows implementations of theJndiCallback
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>)
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
All Methods Instance Methods Concrete Methods 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 fromgetContext()
.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.
Constructor Detail
JndiTemplate
public JndiTemplate()
Create a new JndiTemplate instance.
JndiTemplate
public JndiTemplate(Properties environment)
Create a new JndiTemplate instance, using the given environment.
Method Detail
setEnvironment
public void setEnvironment(Properties environment)
Set the environment for the JNDI InitialContext.
getEnvironment
public Properties getEnvironment()
Return the environment for the JNDI InitialContext, if any.
execute
public <T> T execute(JndiCallback<T> contextCallback) throws NamingException
Execute the given JNDI context callback implementation.- Parameters:
contextCallback
- JndiCallback implementation- 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 byexecute(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(Context ctx)
Release a JNDI context as obtained fromgetContext()
.- Parameters:
ctx
- the JNDI context to release (may benull
)- See Also:
getContext()
createInitialContext
protected Context createInitialContext() throws NamingException
Create a new JNDI initial context. Invoked bygetContext()
.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:
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, 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 objectrequiredType
- type the JNDI object must match. Can be an interface or superclass of the actual class, ornull
for any match. For example, if the value isObject.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 objectobject
- 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 objectobject
- 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