public class JndiDestinationResolver extends JndiLocatorSupport implements CachingDestinationResolver
DestinationResolver implementation which interprets destination names
as JNDI locations (with a configurable fallback strategy).
Allows for customizing the JNDI environment if necessary, for example specifying appropriate JNDI environment properties.
Dynamic queues and topics get cached by destination name. As a consequence,
you need to use unique destination names across both queues and topics.
Caching can be turned off through the "cache" flag.
Note that the fallback to resolution of dynamic destinations
is turned off by default. Switch the
"fallbackToDynamicDestination"
flag on to enable this functionality.
JndiAccessor.setJndiTemplate(org.springframework.jndi.JndiTemplate),
JndiAccessor.setJndiEnvironment(java.util.Properties),
setCache(boolean),
setFallbackToDynamicDestination(boolean)CONTAINER_PREFIXlogger| Constructor and Description |
|---|
JndiDestinationResolver() |
| Modifier and Type | Method and Description |
|---|---|
void |
clearCache()
Clear the entire destination cache.
|
void |
removeFromCache(String destinationName)
Remove the destination with the given name from the cache
(if cached by this resolver in the first place).
|
Destination |
resolveDestinationName(Session session,
String destinationName,
boolean pubSubDomain)
Resolve the given destination name, either as located resource
or as dynamic destination.
|
void |
setCache(boolean cache)
Set whether to cache resolved destinations.
|
void |
setDynamicDestinationResolver(DestinationResolver dynamicDestinationResolver)
Set the
DestinationResolver to use when falling back to dynamic
destinations. |
void |
setFallbackToDynamicDestination(boolean fallbackToDynamicDestination)
Set whether this resolver is supposed to create dynamic destinations
if the destination name is not found in JNDI.
|
protected void |
validateDestination(Destination destination,
String destinationName,
boolean pubSubDomain)
Validate the given Destination object, checking whether it matches
the expected type.
|
convertJndiName, isResourceRef, lookup, lookup, setResourceRefgetJndiEnvironment, getJndiTemplate, setJndiEnvironment, setJndiTemplatepublic void setCache(boolean cache)
This flag can be turned off to re-lookup a destination for each operation, which allows for hot restarting of destinations. This is mainly useful during development.
Note that dynamic queues and topics get cached by destination name. As a consequence, you need to use unique destination names across both queues and topics.
public void setFallbackToDynamicDestination(boolean fallbackToDynamicDestination)
Turn this flag on to enable transparent fallback to dynamic destinations.
public void setDynamicDestinationResolver(DestinationResolver dynamicDestinationResolver)
DestinationResolver to use when falling back to dynamic
destinations.
The default is Spring's standard DynamicDestinationResolver.
public Destination resolveDestinationName(Session session, String destinationName, boolean pubSubDomain) throws JMSException
DestinationResolverresolveDestinationName in interface DestinationResolversession - the current JMS Session
(may be null if the resolver implementation is able to work without it)destinationName - the name of the destinationpubSubDomain - true if the domain is pub-sub, false if P2PJMSException - if the JMS Session failed to resolve the destinationprotected void validateDestination(Destination destination, String destinationName, boolean pubSubDomain)
destination - the Destination object to validatedestinationName - the name of the destinationpubSubDomain - true if a Topic is expected,
false in case of a Queuepublic void removeFromCache(String destinationName)
CachingDestinationResolverTo be called if access to the specified destination failed, assuming that the JMS Destination object might have become invalid.
removeFromCache in interface CachingDestinationResolverdestinationName - the name of the destinationpublic void clearCache()
CachingDestinationResolverTo be called in case of general JMS provider failure.
clearCache in interface CachingDestinationResolver