spring-context

org.springframework.jndi
Class JndiObjectTargetSource

java.lang.Object
  extended by org.springframework.jndi.JndiAccessor
      extended by org.springframework.jndi.JndiLocatorSupport
          extended by org.springframework.jndi.JndiObjectLocator
              extended by org.springframework.jndi.JndiObjectTargetSource
All Implemented Interfaces:
org.springframework.aop.TargetClassAware, org.springframework.aop.TargetSource, org.springframework.beans.factory.InitializingBean

public class JndiObjectTargetSource
extends JndiObjectLocator
implements org.springframework.aop.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()
           
 java.lang.Object getTarget()
           
 java.lang.Class<?> getTargetClass()
           
 boolean isStatic()
           
 void releaseTarget(java.lang.Object target)
           
 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 javax.naming.NamingException
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
Overrides:
afterPropertiesSet in class JndiObjectLocator
Throws:
javax.naming.NamingException

getTargetClass

public java.lang.Class<?> getTargetClass()
Specified by:
getTargetClass in interface org.springframework.aop.TargetClassAware
Specified by:
getTargetClass in interface org.springframework.aop.TargetSource

isStatic

public boolean isStatic()
Specified by:
isStatic in interface org.springframework.aop.TargetSource

getTarget

public java.lang.Object getTarget()
Specified by:
getTarget in interface org.springframework.aop.TargetSource

releaseTarget

public void releaseTarget(java.lang.Object target)
Specified by:
releaseTarget in interface org.springframework.aop.TargetSource

spring-context