Package org.springframework.jndi

# Class JndiLocatorSupport

java.lang.Object
org.springframework.jndi.JndiAccessor
org.springframework.jndi.JndiLocatorSupport

Direct Known Subclasses:
  `JndiLocatorDelegate`, `JndiObjectLocator`, `SimpleJndiBeanFactory`

public abstract class JndiLocatorSupport extends JndiAccessor
Convenient superclass for classes that can locate any number of JNDI objects. Derives from JndiAccessor to inherit the "jndiTemplate" and "jndiEnvironment" bean properties.

JNDI names may or may not include the "java:comp/env/" prefix expected by Jakarta EE applications when accessing a locally mapped (ENC - Environmental Naming Context) resource. If it doesn't, the "java:comp/env/" prefix will be prepended if the "resourceRef" property is true (the default is false) and no other scheme (for example, "java:") is given.

Since:
  1.1
Author:
  Juergen Hoeller
See Also:
  - `JndiAccessor.setJndiTemplate(org.springframework.jndi.JndiTemplate)`
  - `JndiAccessor.setJndiEnvironment(java.util.Properties)`
  - `setResourceRef(boolean)`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`CONTAINER_PREFIX`
JNDI prefix used in a Jakarta EE container.

### Fields inherited from class org.springframework.jndi.JndiAccessor

`logger`

## Constructor Summary

Constructors
Constructor
Description
`JndiLocatorSupport()`

## Method Summary

Modifier and Type
Method
Description
`protected String`
`convertJndiName(String jndiName)`
Convert the given JNDI name into the actual JNDI name to use.
`boolean`
`isResourceRef()`
Return whether the lookup occurs in a Jakarta EE container.
`protected Object`
`lookup(String jndiName)`
Perform an actual JNDI lookup for the given name via the JndiTemplate.
`protected <T> T`
`lookup(String jndiName, Class<T> requiredType)`
Perform an actual JNDI lookup for the given name via the JndiTemplate.
`void`
`setResourceRef(boolean resourceRef)`
Set whether the lookup occurs in a Jakarta EE container, i.e.

### Methods inherited from class org.springframework.jndi.JndiAccessor

`getJndiEnvironment, getJndiTemplate, setJndiEnvironment, setJndiTemplate`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### CONTAINER_PREFIX

public static final String CONTAINER_PREFIX
JNDI prefix used in a Jakarta EE container.

See Also:
  - Constant Field Values

## Constructor Details

### JndiLocatorSupport

public JndiLocatorSupport()

## Method Details

### setResourceRef

public void setResourceRef(boolean resourceRef)
Set whether the lookup occurs in a Jakarta EE container, i.e. if the prefix "java:comp/env/" needs to be added if the JNDI name doesn't already contain it. Default is "false".

Note: Will only get applied if no other scheme (for example, "java:") is given.

### isResourceRef

public boolean isResourceRef()
Return whether the lookup occurs in a Jakarta EE container.

### lookup

protected Object lookup(String jndiName) throws NamingException
Perform an actual JNDI lookup for the given name via the JndiTemplate.

If the name doesn't begin with "java:comp/env/", this prefix is added if "resourceRef" is set to "true".

Parameters:
  `jndiName` - the JNDI name to look up
Returns:
  the obtained object
Throws:
  `NamingException` - if the JNDI lookup failed
See Also:
  - `setResourceRef(boolean)`

### lookup

protected <T> T lookup(String jndiName, @Nullable Class<T> requiredType) throws NamingException
Perform an actual JNDI lookup for the given name via the JndiTemplate.

If the name doesn't begin with "java:comp/env/", this prefix is added if "resourceRef" is set to "true".

Parameters:
  `jndiName` - the JNDI name to look up
  `requiredType` - the required type of the object
Returns:
  the obtained object
Throws:
  `NamingException` - if the JNDI lookup failed
See Also:
  - `setResourceRef(boolean)`

### convertJndiName

protected String convertJndiName(String jndiName)
Convert the given JNDI name into the actual JNDI name to use.

The default implementation applies the "java:comp/env/" prefix if "resourceRef" is "true" and no other scheme (for example, "java:") is given.

Parameters:
  `jndiName` - the original JNDI name
Returns:
  the JNDI name to use
See Also:
  - `CONTAINER_PREFIX`
  - `setResourceRef(boolean)`