org.springframework.jms.core
Class JmsTemplate

java.lang.Object
  extended byorg.springframework.jms.core.JmsTemplate
All Implemented Interfaces:
InitializingBean, JmsOperations
Direct Known Subclasses:
JmsTemplate102

public class JmsTemplate
extends java.lang.Object
implements JmsOperations, InitializingBean

Helper class that simplifies JMS access code. This class requires a JMS 1.1 provider, because it builds on the new domain-independent API. Use the JmsTemplate102 subclass for JMS 1.0.2 providers.

If you want to use dynamic destination creation, you must specify the type of JMS destination to create, using the "pubSubDomain" property. For other operations, this is not necessary, in contrast to when working with JmsTemplate102. Point-to-Point (Queues) is the default domain.

Default settings for JMS sessions are not transacted and auto-acknowledge. As defined by the J2EE specification, the transaction and acknowledgement parameters are ignored when a JMS Session is created inside an active transaction, no matter if a JTA transaction or a Spring-managed transaction.

This template uses a DynamicDestinationResolver and a SimpleMessageConverter as default strategies for resolving a destination name respectively converting a message.

Since:
1.1
Author:
Mark Pollack, Juergen Hoeller
See Also:
setConnectionFactory(javax.jms.ConnectionFactory), setPubSubDomain(boolean), JmsTemplate102, setDestinationResolver(org.springframework.jms.support.destination.DestinationResolver), setMessageConverter(org.springframework.jms.support.converter.MessageConverter), DynamicDestinationResolver, SimpleMessageConverter

Field Summary
static long DEFAULT_RECEIVE_TIMEOUT
          Default timeout for receive operations: -1 indicates a blocking receive without timeout.
protected  org.apache.commons.logging.Log logger
           
 
Constructor Summary
JmsTemplate()
          Create a new JmsTemplate for bean-style usage.
JmsTemplate(javax.jms.ConnectionFactory connectionFactory)
          Create a new JmsTemplate, given a ConnectionFactory.
 
Method Summary
 void afterPropertiesSet()
          Make sure the connection factory has been set.
 void convertAndSend(javax.jms.Destination destination, java.lang.Object message)
          Send the given object to the specified destination, converting the object to a JMS message with a configured MessageConverter.
 void convertAndSend(javax.jms.Destination destination, java.lang.Object message, MessagePostProcessor postProcessor)
          Send the given object to the specified destination, converting the object to a JMS message with a configured MessageConverter.
 void convertAndSend(java.lang.Object message)
          Send the given object to the default destination, converting the object to a JMS message with a configured MessageConverter.
 void convertAndSend(java.lang.Object message, MessagePostProcessor postProcessor)
          Send the given object to the default destination, converting the object to a JMS message with a configured MessageConverter.
 void convertAndSend(java.lang.String destinationName, java.lang.Object message)
          Send the given object to the specified destination, converting the object to a JMS message with a configured MessageConverter.
 void convertAndSend(java.lang.String destinationName, java.lang.Object message, MessagePostProcessor postProcessor)
          Send the given object to the specified destination, converting the object to a JMS message with a configured MessageConverter.
protected  JmsException convertJmsAccessException(javax.jms.JMSException ex)
          Convert the specified checked JMSException to a Spring runtime JmsException equivalent.
protected  javax.jms.Connection createConnection()
          Create a JMS Connection via this template's ConnectionFactory.
protected  javax.jms.MessageConsumer createConsumer(javax.jms.Session session, javax.jms.Destination destination)
          Create a JMS MessageConsumer for the given Session and Destination.
protected  javax.jms.MessageProducer createProducer(javax.jms.Session session, javax.jms.Destination destination)
          Create a JMS MessageProducer for the given Session and Destination.
protected  javax.jms.Session createSession(javax.jms.Connection con)
          Create a JMS Session for the given Connection.
protected  java.lang.Object doConvertFromMessage(javax.jms.Message message)
           
protected  javax.jms.Message doReceive(javax.jms.Session session, javax.jms.Destination destination)
           
protected  void doSend(javax.jms.MessageProducer producer, javax.jms.Message message)
           
protected  void doSend(javax.jms.Session session, javax.jms.Destination destination, MessageCreator messageCreator)
           
 java.lang.Object execute(ProducerCallback action)
          Send a message to a JMS destination.
 java.lang.Object execute(SessionCallback action)
          Execute the action specified by the given action object within a JMS Session.
 java.lang.Object execute(SessionCallback action, boolean startConnection)
          Execute the action specified by the given action object within a JMS Session.
 javax.jms.ConnectionFactory getConnectionFactory()
          Return the connection factory used for obtaining JMS connections.
 javax.jms.Destination getDefaultDestination()
          Return the destination to be used on send operations that do not have a destination parameter.
 int getDeliveryMode()
          Return the delivery mode to use when sending a message.
 DestinationResolver getDestinationResolver()
          Get the destination resolver for this template.
 MessageConverter getMessageConverter()
          Return the message converter for this template.
 int getPriority()
          Return the priority of a message when sending.
 long getReceiveTimeout()
          Return the timeout to use for receive calls.
 int getSessionAcknowledgeMode()
          Return the acknowledgement mode for JMS sessions.
 long getTimeToLive()
          Return the time-to-live of the message when sending.
protected  void initDefaultStrategies()
          Initialize the default implementations for the template's strategies: DynamicDestinationResolver and SimpleMessageConverter.
protected  boolean isClientAcknowledge(javax.jms.Session session)
           
 boolean isExplicitQosEnabled()
          If true, then the values of deliveryMode, priority, and timeToLive will be used when sending a message.
 boolean isPubSubDomain()
          Return whether the Publish/Subscribe domain (Topics) is used.
 boolean isSessionTransacted()
          Return whether the JMS sessions used for sending a message are transacted.
 javax.jms.Message receive()
          Receive a message synchronously from the default destination, but only wait up to a specified time for delivery.
 javax.jms.Message receive(javax.jms.Destination destination)
          Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery.
 javax.jms.Message receive(java.lang.String destinationName)
          Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery.
 java.lang.Object receiveAndConvert()
          Receive a message synchronously from the default destination, but only wait up to a specified time for delivery.
 java.lang.Object receiveAndConvert(javax.jms.Destination destination)
          Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery.
 java.lang.Object receiveAndConvert(java.lang.String destinationName)
          Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery.
protected  javax.jms.Destination resolveDestinationName(javax.jms.Session session, java.lang.String destinationName)
          Resolve the given destination name into a JMS Destination, via this template's DestinationResolver.
 void send(javax.jms.Destination destination, MessageCreator messageCreator)
          Send a message to the specified destination.
 void send(MessageCreator messageCreator)
          Send a message to the default destination.
 void send(java.lang.String destinationName, MessageCreator messageCreator)
          Send a message to the specified destination.
 void setConnectionFactory(javax.jms.ConnectionFactory connectionFactory)
          Set the connection factory used for obtaining JMS connections.
 void setDefaultDestination(javax.jms.Destination destination)
          Set the destination to be used on send operations that do not have a destination parameter.
 void setDeliveryMode(int deliveryMode)
          Set the delivery mode to use when sending a message.
 void setDestinationResolver(DestinationResolver destinationResolver)
          Set the destination resolver for this template.
 void setExplicitQosEnabled(boolean explicitQosEnabled)
          Set if the QOS values (deliveryMode, priority, timeToLive) should be used for sending a message.
 void setMessageConverter(MessageConverter messageConverter)
          Set the message converter for this template.
 void setPriority(int priority)
          Set the priority of a message when sending.
 void setPubSubDomain(boolean pubSubDomain)
          Configure the JmsTemplate with knowledge of the JMS domain used.
 void setReceiveTimeout(long receiveTimeout)
          Set the timeout to use for receive calls.
 void setSessionAcknowledgeMode(int sessionAcknowledgeMode)
          Set the JMS acknowledgement mode that is used when creating a JMS session to send a message.
 void setSessionAcknowledgeModeName(java.lang.String constantName)
          Set the JMS acknowledgement mode by the name of the corresponding constant in the JMS Session interface, e.g.
 void setSessionTransacted(boolean sessionTransacted)
          Set the transaction mode that is used when creating a JMS session to send a message.
 void setTimeToLive(long timeToLive)
          Set the time-to-live of the message when sending.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_RECEIVE_TIMEOUT

public static final long DEFAULT_RECEIVE_TIMEOUT
Default timeout for receive operations: -1 indicates a blocking receive without timeout.

See Also:
Constant Field Values

logger

protected final org.apache.commons.logging.Log logger
Constructor Detail

JmsTemplate

public JmsTemplate()
Create a new JmsTemplate for bean-style usage.

Note: The ConnectionFactory has to be set before using the instance. This constructor can be used to prepare a JmsTemplate via a BeanFactory, typically setting the ConnectionFactory via setConnectionFactory.

See Also:
setConnectionFactory(javax.jms.ConnectionFactory)

JmsTemplate

public JmsTemplate(javax.jms.ConnectionFactory connectionFactory)
Create a new JmsTemplate, given a ConnectionFactory.

Parameters:
connectionFactory - the ConnectionFactory to obtain connections from
Method Detail

initDefaultStrategies

protected void initDefaultStrategies()
Initialize the default implementations for the template's strategies: DynamicDestinationResolver and SimpleMessageConverter.

See Also:
setDestinationResolver(org.springframework.jms.support.destination.DestinationResolver), setMessageConverter(org.springframework.jms.support.converter.MessageConverter), DynamicDestinationResolver, SimpleMessageConverter

setConnectionFactory

public void setConnectionFactory(javax.jms.ConnectionFactory connectionFactory)
Set the connection factory used for obtaining JMS connections.


getConnectionFactory

public javax.jms.ConnectionFactory getConnectionFactory()
Return the connection factory used for obtaining JMS connections.


setPubSubDomain

public void setPubSubDomain(boolean pubSubDomain)
Configure the JmsTemplate with knowledge of the JMS domain used. Default is Point-to-Point (Queues).

For JmsTemplate102, this tells the JMS provider which class hierarchy to use in the implementation of the various execute methods. For JmsTemplate itself, it does not affect execute methods. In both implementations, it tells what type of destination to create if dynamic destinations are enabled.

Parameters:
pubSubDomain - true for Publish/Subscribe domain (Topics), false for Point-to-Point domain (Queues)
See Also:
setDestinationResolver(org.springframework.jms.support.destination.DestinationResolver)

isPubSubDomain

public boolean isPubSubDomain()
Return whether the Publish/Subscribe domain (Topics) is used. Otherwise, the Point-to-Point domain (Queues) is used.


setSessionTransacted

public void setSessionTransacted(boolean sessionTransacted)
Set the transaction mode that is used when creating a JMS session to send a message.

Note that that within a JTA transaction, the parameters to createSession(boolean transacted, int acknowledgeMode) method are not taken into account. Depending on the J2EE transaction context, the container makes its own decisions on these values. See section 17.3.5 of the EJB Spec.

Parameters:
sessionTransacted - the transaction mode

isSessionTransacted

public boolean isSessionTransacted()
Return whether the JMS sessions used for sending a message are transacted.


setSessionAcknowledgeModeName

public void setSessionAcknowledgeModeName(java.lang.String constantName)
Set the JMS acknowledgement mode by the name of the corresponding constant in the JMS Session interface, e.g. "CLIENT_ACKNOWLEDGE".

Parameters:
constantName - name of the constant
See Also:
Session.AUTO_ACKNOWLEDGE, Session.CLIENT_ACKNOWLEDGE, Session.DUPS_OK_ACKNOWLEDGE

setSessionAcknowledgeMode

public void setSessionAcknowledgeMode(int sessionAcknowledgeMode)
Set the JMS acknowledgement mode that is used when creating a JMS session to send a message. Vendor extensions to the acknowledgment mode can be set here as well.

Note that that inside an EJB the parameters to createSession(boolean transacted, int acknowledgeMode) method are not taken into account. Depending on the transaction context in the EJB, the container makes its own decisions on these values. See section 17.3.5 of the EJB Spec.

Parameters:
sessionAcknowledgeMode - the acknowledgement mode

getSessionAcknowledgeMode

public int getSessionAcknowledgeMode()
Return the acknowledgement mode for JMS sessions.


setDefaultDestination

public void setDefaultDestination(javax.jms.Destination destination)
Set the destination to be used on send operations that do not have a destination parameter.

See Also:
send(MessageCreator), convertAndSend(Object), convertAndSend(Object, MessagePostProcessor)

getDefaultDestination

public javax.jms.Destination getDefaultDestination()
Return the destination to be used on send operations that do not have a destination parameter.


setDestinationResolver

public void setDestinationResolver(DestinationResolver destinationResolver)
Set the destination resolver for this template. Used to resolve destination names and to support dynamic destination functionality.

The default resolver is a DynamicDestinationResolver. Specify a JndiDestinationResolver for resolving destination names as JNDI locations.

See Also:
DynamicDestinationResolver, JndiDestinationResolver

getDestinationResolver

public DestinationResolver getDestinationResolver()
Get the destination resolver for this template.


setMessageConverter

public void setMessageConverter(MessageConverter messageConverter)
Set the message converter for this template. Used to resolve Object parameters to convertAndSend methods and Object results from receiveAndConvert methods.

The default converter is a SimpleMessageConverter, which is able to handle BytesMessages, TextMessages and ObjectMessages.

See Also:
convertAndSend(java.lang.Object), receiveAndConvert(), SimpleMessageConverter

getMessageConverter

public MessageConverter getMessageConverter()
Return the message converter for this template.


setReceiveTimeout

public void setReceiveTimeout(long receiveTimeout)
Set the timeout to use for receive calls. The default is -1, which means no timeout.

See Also:
MessageConsumer.receive(long), MessageConsumer.receive()

getReceiveTimeout

public long getReceiveTimeout()
Return the timeout to use for receive calls.


setExplicitQosEnabled

public void setExplicitQosEnabled(boolean explicitQosEnabled)
Set if the QOS values (deliveryMode, priority, timeToLive) should be used for sending a message.


isExplicitQosEnabled

public boolean isExplicitQosEnabled()
If true, then the values of deliveryMode, priority, and timeToLive will be used when sending a message. Otherwise, the default values, that may be set administratively, will be used.

Returns:
true if overriding default values of QOS parameters (deliveryMode, priority, and timeToLive)
See Also:
setDeliveryMode(int), setPriority(int), setTimeToLive(long)

setDeliveryMode

public void setDeliveryMode(int deliveryMode)
Set the delivery mode to use when sending a message. Since a default value may be defined administratively, it is only used when isExplicitQosEnabled equals true.

Parameters:
deliveryMode - the delivery mode to use
See Also:
isExplicitQosEnabled()

getDeliveryMode

public int getDeliveryMode()
Return the delivery mode to use when sending a message.


setPriority

public void setPriority(int priority)
Set the priority of a message when sending. Since a default value may be defined administratively, it is only used when isExplicitQosEnabled equals true.

See Also:
isExplicitQosEnabled()

getPriority

public int getPriority()
Return the priority of a message when sending.


setTimeToLive

public void setTimeToLive(long timeToLive)
Set the time-to-live of the message when sending. Since a default value may be defined administratively, it is only used when isExplicitQosEnabled equals true.

Parameters:
timeToLive - the message's lifetime (in milliseconds)
See Also:
isExplicitQosEnabled()

getTimeToLive

public long getTimeToLive()
Return the time-to-live of the message when sending.


afterPropertiesSet

public void afterPropertiesSet()
Make sure the connection factory has been set.

Specified by:
afterPropertiesSet in interface InitializingBean

createConnection

protected javax.jms.Connection createConnection()
                                         throws javax.jms.JMSException
Create a JMS Connection via this template's ConnectionFactory.

This implementation uses JMS 1.1 API.

Returns:
the new JMS Connection
Throws:
javax.jms.JMSException - if thrown by JMS API methods

createSession

protected javax.jms.Session createSession(javax.jms.Connection con)
                                   throws javax.jms.JMSException
Create a JMS Session for the given Connection.

This implementation uses JMS 1.1 API.

Parameters:
con - the JMS Connection to create a Session for
Returns:
the new JMS Session
Throws:
javax.jms.JMSException - if thrown by JMS API methods

createProducer

protected javax.jms.MessageProducer createProducer(javax.jms.Session session,
                                                   javax.jms.Destination destination)
                                            throws javax.jms.JMSException
Create a JMS MessageProducer for the given Session and Destination.

This implementation uses JMS 1.1 API.

Parameters:
session - the JMS Session to create a MessageProducer for
destination - the JMS Destination to create a MessageProducer for
Returns:
the new JMS MessageProducer
Throws:
javax.jms.JMSException - if thrown by JMS API methods

createConsumer

protected javax.jms.MessageConsumer createConsumer(javax.jms.Session session,
                                                   javax.jms.Destination destination)
                                            throws javax.jms.JMSException
Create a JMS MessageConsumer for the given Session and Destination.

This implementation uses JMS 1.1 API.

Parameters:
session - the JMS Session to create a MessageConsumer for
destination - the JMS Destination to create a MessageConsumer for
Returns:
the new JMS MessageConsumer
Throws:
javax.jms.JMSException - if thrown by JMS API methods

resolveDestinationName

protected javax.jms.Destination resolveDestinationName(javax.jms.Session session,
                                                       java.lang.String destinationName)
                                                throws javax.jms.JMSException
Resolve the given destination name into a JMS Destination, via this template's DestinationResolver.

Parameters:
session - the current JMS Session
destinationName - the name of the destination
Returns:
the located Destination
Throws:
javax.jms.JMSException - if resolution failed
See Also:
setDestinationResolver(org.springframework.jms.support.destination.DestinationResolver)

convertJmsAccessException

protected JmsException convertJmsAccessException(javax.jms.JMSException ex)
Convert the specified checked JMSException to a Spring runtime JmsException equivalent.

Default implementation delegates to JmsUtils.

Parameters:
ex - the original checked JMSException to convert
Returns:
the Spring runtime JmsException wrapping ex
See Also:
JmsUtils.convertJmsAccessException(javax.jms.JMSException)

execute

public java.lang.Object execute(SessionCallback action,
                                boolean startConnection)
                         throws JmsException
Execute the action specified by the given action object within a JMS Session. Generalized version of execute(SessionCallback), allowing to start the JMS Connection on the fly.

Use execute(SessionCallback) for the general case. Starting the JMS Connection is just necessary for receiving messages, which is preferably achieve through the receive methods.

Parameters:
action - callback object that exposes the session
Returns:
the result object from working with the session
Throws:
JmsException - if there is any problem
See Also:
execute(SessionCallback), receive()

execute

public java.lang.Object execute(SessionCallback action)
                         throws JmsException
Description copied from interface: JmsOperations
Execute the action specified by the given action object within a JMS Session.

When used with a 1.0.2 provider, you may need to downcast to the appropriate domain implementation, either QueueSession or TopicSession in the action objects doInJms callback method.

Note: The value of isPubSubDomain affects the behavior of this method. If isPubSubDomain equals true, then a TopicSession is passed to the callback. If false, then a QueueSession is passed to the callback.

Specified by:
execute in interface JmsOperations
Parameters:
action - callback object that exposes the session
Returns:
the result object from working with the session
Throws:
JmsException - if there is any problem

execute

public java.lang.Object execute(ProducerCallback action)
                         throws JmsException
Description copied from interface: JmsOperations
Send a message to a JMS destination. The callback gives access to the JMS session and MessageProducer in order to do more complex send operations.

Specified by:
execute in interface JmsOperations
Parameters:
action - callback object that exposes the session/producer pair
Returns:
the result object from working with the session
Throws:
JmsException - checked JMSException converted to unchecked

send

public void send(MessageCreator messageCreator)
          throws JmsException
Description copied from interface: JmsOperations
Send a message to the default destination.

This will only work with a default destination specified!

Specified by:
send in interface JmsOperations
Parameters:
messageCreator - callback to create a message.
Throws:
JmsException - checked JMSException converted to unchecked

send

public void send(javax.jms.Destination destination,
                 MessageCreator messageCreator)
          throws JmsException
Description copied from interface: JmsOperations
Send a message to the specified destination. The MessageCreator callback creates the message given a Session.

Specified by:
send in interface JmsOperations
Parameters:
destination - the destination to send this message to
messageCreator - callback to create a message.
Throws:
JmsException - checked JMSException converted to unchecked

send

public void send(java.lang.String destinationName,
                 MessageCreator messageCreator)
          throws JmsException
Description copied from interface: JmsOperations
Send a message to the specified destination. The MessageCreator callback creates the message given a Session.

Specified by:
send in interface JmsOperations
Parameters:
destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
messageCreator - callback to create a message.
Throws:
JmsException - checked JMSException converted to unchecked

doSend

protected void doSend(javax.jms.Session session,
                      javax.jms.Destination destination,
                      MessageCreator messageCreator)
               throws javax.jms.JMSException
Throws:
javax.jms.JMSException

doSend

protected void doSend(javax.jms.MessageProducer producer,
                      javax.jms.Message message)
               throws javax.jms.JMSException
Throws:
javax.jms.JMSException

convertAndSend

public void convertAndSend(java.lang.Object message)
                    throws JmsException
Description copied from interface: JmsOperations
Send the given object to the default destination, converting the object to a JMS message with a configured MessageConverter.

This will only work with a default destination specified!

Specified by:
convertAndSend in interface JmsOperations
Parameters:
message - the object to convert to a message
Throws:
JmsException - converted checked JMSException to unchecked

convertAndSend

public void convertAndSend(javax.jms.Destination destination,
                           java.lang.Object message)
                    throws JmsException
Description copied from interface: JmsOperations
Send the given object to the specified destination, converting the object to a JMS message with a configured MessageConverter.

Specified by:
convertAndSend in interface JmsOperations
Parameters:
destination - the destination to send this message to
message - the object to convert to a message
Throws:
JmsException - converted checked JMSException to unchecked

convertAndSend

public void convertAndSend(java.lang.String destinationName,
                           java.lang.Object message)
                    throws JmsException
Description copied from interface: JmsOperations
Send the given object to the specified destination, converting the object to a JMS message with a configured MessageConverter.

Specified by:
convertAndSend in interface JmsOperations
Parameters:
destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
message - the object to convert to a message
Throws:
JmsException - checked JMSException converted to unchecked

convertAndSend

public void convertAndSend(java.lang.Object message,
                           MessagePostProcessor postProcessor)
                    throws JmsException
Description copied from interface: JmsOperations
Send the given object to the default destination, converting the object to a JMS message with a configured MessageConverter. The MessagePostProcessor callback allows for modification of the message after conversion.

This will only work with a default destination specified!

Specified by:
convertAndSend in interface JmsOperations
Parameters:
message - the object to convert to a message
postProcessor - the callback to modify the message
Throws:
JmsException - checked JMSException converted to unchecked

convertAndSend

public void convertAndSend(javax.jms.Destination destination,
                           java.lang.Object message,
                           MessagePostProcessor postProcessor)
                    throws JmsException
Description copied from interface: JmsOperations
Send the given object to the specified destination, converting the object to a JMS message with a configured MessageConverter. The MessagePostProcessor callback allows for modification of the message after conversion.

Specified by:
convertAndSend in interface JmsOperations
Parameters:
destination - the destination to send this message to
message - the object to convert to a message
postProcessor - the callback to modify the message
Throws:
JmsException - checked JMSException converted to unchecked

convertAndSend

public void convertAndSend(java.lang.String destinationName,
                           java.lang.Object message,
                           MessagePostProcessor postProcessor)
                    throws JmsException
Description copied from interface: JmsOperations
Send the given object to the specified destination, converting the object to a JMS message with a configured MessageConverter. The MessagePostProcessor callback allows for modification of the message after conversion.

Specified by:
convertAndSend in interface JmsOperations
Parameters:
destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
message - the object to convert to a message.
postProcessor - the callback to modify the message
Throws:
JmsException - checked JMSException converted to unchecked

receive

public javax.jms.Message receive()
                          throws JmsException
Description copied from interface: JmsOperations
Receive a message synchronously from the default destination, but only wait up to a specified time for delivery.

This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

This will only work with a default destination specified!

Specified by:
receive in interface JmsOperations
Returns:
the message produced for the consumer or null if the timeout expires.
Throws:
JmsException - checked JMSException converted to unchecked

receive

public javax.jms.Message receive(javax.jms.Destination destination)
                          throws JmsException
Description copied from interface: JmsOperations
Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery.

This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

Specified by:
receive in interface JmsOperations
Parameters:
destination - the destination to receive a message from
Returns:
the message produced for the consumer or null if the timeout expires.
Throws:
JmsException - checked JMSException converted to unchecked

receive

public javax.jms.Message receive(java.lang.String destinationName)
                          throws JmsException
Description copied from interface: JmsOperations
Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery.

This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

Specified by:
receive in interface JmsOperations
Parameters:
destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
Returns:
the message produced for the consumer or null if the timeout expires.
Throws:
JmsException - checked JMSException converted to unchecked

doReceive

protected javax.jms.Message doReceive(javax.jms.Session session,
                                      javax.jms.Destination destination)
                               throws javax.jms.JMSException
Throws:
javax.jms.JMSException

isClientAcknowledge

protected boolean isClientAcknowledge(javax.jms.Session session)
                               throws javax.jms.JMSException
Throws:
javax.jms.JMSException

receiveAndConvert

public java.lang.Object receiveAndConvert()
                                   throws JmsException
Description copied from interface: JmsOperations
Receive a message synchronously from the default destination, but only wait up to a specified time for delivery. Convert the message into an object with a configured MessageConverter.

This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

This will only work with a default destination specified!

Specified by:
receiveAndConvert in interface JmsOperations
Returns:
the message produced for the consumer or null if the timeout expires.
Throws:
JmsException - checked JMSException converted to unchecked

receiveAndConvert

public java.lang.Object receiveAndConvert(javax.jms.Destination destination)
                                   throws JmsException
Description copied from interface: JmsOperations
Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery. Convert the message into an object with a configured MessageConverter.

This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

Specified by:
receiveAndConvert in interface JmsOperations
Parameters:
destination - the destination to receive a message from
Returns:
the message produced for the consumer or null if the timeout expires.
Throws:
JmsException - checked JMSException converted to unchecked

receiveAndConvert

public java.lang.Object receiveAndConvert(java.lang.String destinationName)
                                   throws JmsException
Description copied from interface: JmsOperations
Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery. Convert the message into an object with a configured MessageConverter.

This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

Specified by:
receiveAndConvert in interface JmsOperations
Parameters:
destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
Returns:
the message produced for the consumer or null if the timeout expires.
Throws:
JmsException - checked JMSException converted to unchecked

doConvertFromMessage

protected java.lang.Object doConvertFromMessage(javax.jms.Message message)


Copyright (C) 2003-2004 The Spring Framework Project.