## org.springframework.jndi
Class JndiObjectTargetSource

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

All Implemented Interfaces:
  TargetClassAware, TargetSource, InitializingBean

    public class JndiObjectTargetSource

extends JndiObjectLocator
implements TargetSource

AOP `TargetSource` that provides configurable JNDI lookups for `getTarget()` calls.

Can be used as alternative to `JndiObjectFactoryBean`, to allow for relocating a JNDI object lazily or for each operation (see "lookupOnStartup" and "cache" properties). This is particularly useful during development, as it allows for hot restarting of the JNDI server (for example, a remote JMS server).

Example:

     <bean id="queueConnectionFactoryTarget" class="org.springframework.jndi.JndiObjectTargetSource">
       <property name="jndiName" value="JmsQueueConnectionFactory"/>
       <property name="lookupOnStartup" value="false"/>
     </bean>

     <bean id="queueConnectionFactory" class="org.springframework.aop.framework.ProxyFactoryBean">
       <property name="proxyInterfaces" value="javax.jms.QueueConnectionFactory"/>
       <property name="targetSource" ref="queueConnectionFactoryTarget"/>
     </bean>

A `createQueueConnection` call on the "queueConnectionFactory" proxy will cause a lazy JNDI lookup for "JmsQueueConnectionFactory" and a subsequent delegating call to the retrieved QueueConnectionFactory's `createQueueConnection`.

Alternatively, use a `JndiObjectFactoryBean` with a "proxyInterface". "lookupOnStartup" and "cache" can then be specified on the JndiObjectFactoryBean, creating a JndiObjectTargetSource underneath (instead of defining separate ProxyFactoryBean and JndiObjectTargetSource beans).

Since:
  1.1
Author:
  Juergen Hoeller
See Also:
  `setLookupOnStartup(boolean)`, `setCache(boolean)`, `AdvisedSupport.setTargetSource(org.springframework.aop.TargetSource)`, `JndiObjectFactoryBean.setProxyInterface(java.lang.Class)`

Field Summary

Fields inherited from class org.springframework.jndi.JndiLocatorSupport
`CONTAINER_PREFIX`

Fields inherited from class org.springframework.jndi.JndiAccessor
`logger`

Constructor Summary
`JndiObjectTargetSource()`

Method Summary
`void` `afterPropertiesSet()` Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
`Object` `getTarget()` Return a target instance.
`Class<?>` `getTargetClass()` Return the type of targets returned by this `TargetSource`.
`boolean` `isStatic()` Will all calls to `TargetSource.getTarget()` return the same object?
`void` `releaseTarget(Object target)` Release the given target object obtained from the `TargetSource.getTarget()` method.
`void` `setCache(boolean cache)` Set whether to cache the JNDI object once it has been located.
`void` `setLookupOnStartup(boolean lookupOnStartup)` Set whether to look up the JNDI object on startup.

Methods inherited from class org.springframework.jndi.JndiObjectLocator
`getExpectedType, getJndiName, lookup, setExpectedType, setJndiName`

Methods inherited from class org.springframework.jndi.JndiLocatorSupport
`convertJndiName, isResourceRef, lookup, lookup, setResourceRef`

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`

Constructor Detail

### JndiObjectTargetSource

    public JndiObjectTargetSource()

Method Detail

### setLookupOnStartup

    public void setLookupOnStartup(boolean lookupOnStartup)

  Set whether to look up the JNDI object on startup. Default is "true".

  Can be turned off to allow for late availability of the JNDI object. In this case, the JNDI object will be fetched on first access.

  See Also:
    `setCache(boolean)`

### setCache

    public void setCache(boolean cache)

  Set whether to cache the JNDI object once it has been located. Default is "true".

  Can be turned off to allow for hot redeployment of JNDI objects. In this case, the JNDI object will be fetched for each invocation.

  See Also:
    `setLookupOnStartup(boolean)`

### afterPropertiesSet

    public void afterPropertiesSet()
                            throws NamingException

  Description copied from interface: `InitializingBean`
  Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

  This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.

  Specified by:
    `afterPropertiesSet` in interface `InitializingBean`
  Overrides:
    `afterPropertiesSet` in class `JndiObjectLocator`
  Throws:
    `NamingException`

### getTargetClass

    public Class<?> getTargetClass()

  Description copied from interface: `TargetSource`
  Return the type of targets returned by this `TargetSource`.

  Can return `null`, although certain usages of a `TargetSource` might just work with a predetermined target class.

  Specified by:
    `getTargetClass` in interface `TargetClassAware`
  Specified by:
    `getTargetClass` in interface `TargetSource`
  Returns:
    the type of targets returned by this `TargetSource`

### isStatic

    public boolean isStatic()

  Description copied from interface: `TargetSource`
  Will all calls to `TargetSource.getTarget()` return the same object?

  In that case, there will be no need to invoke `TargetSource.releaseTarget(Object)`, and the AOP framework can cache the return value of `TargetSource.getTarget()`.

  Specified by:
    `isStatic` in interface `TargetSource`
  Returns:
    `true` if the target is immutable
  See Also:
    `TargetSource.getTarget()`

### getTarget

    public Object getTarget()

  Description copied from interface: `TargetSource`
  Return a target instance. Invoked immediately before the AOP framework calls the "target" of an AOP method invocation.

  Specified by:
    `getTarget` in interface `TargetSource`
  Returns:
    the target object, which contains the joinpoint

### releaseTarget

    public void releaseTarget(Object target)

  Description copied from interface: `TargetSource`
  Release the given target object obtained from the `TargetSource.getTarget()` method.

  Specified by:
    `releaseTarget` in interface `TargetSource`
  Parameters:
    `target` - object obtained from a call to `TargetSource.getTarget()`