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:
- 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)
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
JndiObjectTargetSource
public JndiObjectTargetSource()
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