org.jboss.soa.esb.notification
Class NotifyJMS

java.lang.Object
  extended by org.jboss.soa.esb.notification.NotificationTarget
      extended by org.jboss.soa.esb.notification.NotifyJMS
Direct Known Subclasses:
NotifyQueues, NotifyTopics

public abstract class NotifyJMS
extends NotificationTarget

Abstract class that defines the behaviour of NotifyQueues and NotifyTopics (and in fact any other javax.jms.Destination object), and provides common methods to derived classes

Description:

Author: Heuristica - Buenos Aires - Argentina

Version:
1.0

Nested Class Summary
static class NotifyJMS.NativeMessage
           
 
Field Summary
static java.lang.String ATT_DEST_NAME
          Attribute name mnemonic for the att that will hold the JNDI name of the destination javax.jms.Destination object
static java.lang.String ATT_PROP_NAME
          Attribute name mnemonic for the name of the message property to fill with contents of the "value" aattribute
static java.lang.String ATT_PROP_VALUE
          Attribute name mnemonic for the value to assign to the corresponding message property
static java.lang.String CHILD_MSG_PROP
          Element name mnemonic to search for child elements in the ConfigTree at constructor time, that will hold a "name" "value" pair to be included in the JMS message header
static java.lang.String CONNECTION_FACTORY
          Connection Factory JNDI name.
protected  org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool[] connectionPools
          The javax.jms.Connection instance used to talk to JMS
protected  int[] deliveryModes
          Delivery mode for JMS Messages, either DeliveryMode.PERSISTENT or DeliveryMode.NON_PERSISTENT
protected  org.apache.log4j.Logger log
           
static java.lang.String PERSISTENT_ATTR
          Constant used in configuration
protected  int[] priorities
          Priorities for JMS Messages seen by this notifier
static java.lang.String PRIORITY_ATTR
          Constant used in configuration
protected  javax.jms.MessageProducer[] producers
          Array with an instance of javax.jms.MessageProducer on each entry that will be used to send the notification at sendNotification() time
protected  javax.jms.Session[] sessions
          The javax.jms.Session instance used to talk to JMS
static java.lang.String TIME_TO_LIVE_ATTR
          Constant used in configuration
protected  long[] timeToLives
          Time-to-lives for JMS Messages sen by this notifier
 
Fields inherited from class org.jboss.soa.esb.notification.NotificationTarget
m_oParms, PRM_NOTIF_CLASS
 
Constructor Summary
protected NotifyJMS(ConfigTree p_oP)
          Constructor that will be called by child classes to perform initialization tasks that are common to all derived classes
 
Method Summary
protected abstract  javax.jms.MessageProducer createProducer(org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool pool, java.lang.String destinationName, javax.jms.Session session, java.util.Properties environment)
          Creates a message producer specific to the subclasses implementation i.e QueueSender or TopicPublisher.
protected abstract  void send(javax.jms.Message p_oMsg, javax.jms.MessageProducer msgProducer)
          Abstract method - All classes that extend NotifyJMS must implement it according to their own javax.jms.Destination needs (Queue/Topic)
 void sendNotification(Message esbMessage)
          Send a JMS message using p_o to fill in the message content and the list of message properties that will be added to the JMS message header fields
protected  void sendToAll(javax.jms.Message p_oMsg)
          Template method for sending JMS messages to destinations.
protected  void setJMSProperties(Message fromESBMessage, javax.jms.Message toJMSMessage)
          This method will set appropriate JMSProperties on the outgoing JMSMessage object.
 void setJmsPropertiesStrategy(JMSPropertiesSetter jmsPropertiesStrategy)
          Sets the strategy for handling the setting of properties on an outgoing JMS Message.
protected  void setUpProducers(ConfigTree[] configTrees)
          Will setup/create JMS connections, sessions, producers.
 
Methods inherited from class org.jboss.soa.esb.notification.NotificationTarget
fromParams
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected org.apache.log4j.Logger log

CONNECTION_FACTORY

public static final java.lang.String CONNECTION_FACTORY
Connection Factory JNDI name.

See Also:
Constant Field Values

CHILD_MSG_PROP

public static final java.lang.String CHILD_MSG_PROP
Element name mnemonic to search for child elements in the ConfigTree at constructor time, that will hold a "name" "value" pair to be included in the JMS message header

See Also:
Constant Field Values

ATT_PROP_NAME

public static final java.lang.String ATT_PROP_NAME
Attribute name mnemonic for the name of the message property to fill with contents of the "value" aattribute

See Also:
Constant Field Values

ATT_PROP_VALUE

public static final java.lang.String ATT_PROP_VALUE
Attribute name mnemonic for the value to assign to the corresponding message property

See Also:
Constant Field Values

ATT_DEST_NAME

public static final java.lang.String ATT_DEST_NAME
Attribute name mnemonic for the att that will hold the JNDI name of the destination javax.jms.Destination object

See Also:
Constant Field Values

PERSISTENT_ATTR

public static final java.lang.String PERSISTENT_ATTR
Constant used in configuration

See Also:
Constant Field Values

PRIORITY_ATTR

public static final java.lang.String PRIORITY_ATTR
Constant used in configuration

See Also:
Constant Field Values

TIME_TO_LIVE_ATTR

public static final java.lang.String TIME_TO_LIVE_ATTR
Constant used in configuration

See Also:
Constant Field Values

connectionPools

protected org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool[] connectionPools
The javax.jms.Connection instance used to talk to JMS


sessions

protected javax.jms.Session[] sessions
The javax.jms.Session instance used to talk to JMS


producers

protected javax.jms.MessageProducer[] producers
Array with an instance of javax.jms.MessageProducer on each entry that will be used to send the notification at sendNotification() time


deliveryModes

protected int[] deliveryModes
Delivery mode for JMS Messages, either DeliveryMode.PERSISTENT or DeliveryMode.NON_PERSISTENT


priorities

protected int[] priorities
Priorities for JMS Messages seen by this notifier


timeToLives

protected long[] timeToLives
Time-to-lives for JMS Messages sen by this notifier

Constructor Detail

NotifyJMS

protected NotifyJMS(ConfigTree p_oP)
             throws ConfigurationException
Constructor that will be called by child classes to perform initialization tasks that are common to all derived classes

Parameters:
p_oP - ConfigTree

Will contain a variable number of "messageProp" child elements that will be added to messages sent to

Throws:
ConfigurationException
Method Detail

send

protected abstract void send(javax.jms.Message p_oMsg,
                             javax.jms.MessageProducer msgProducer)
                      throws javax.jms.JMSException
Abstract method - All classes that extend NotifyJMS must implement it according to their own javax.jms.Destination needs (Queue/Topic)

Parameters:
p_oMsg - the JMS Message to send
msgProducer - the JMS Message Producer which will perform the sending
Throws:
javax.jms.JMSException - if the send was not sucessful

createProducer

protected abstract javax.jms.MessageProducer createProducer(org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool pool,
                                                            java.lang.String destinationName,
                                                            javax.jms.Session session,
                                                            java.util.Properties environment)
                                                     throws javax.naming.NamingException,
                                                            javax.jms.JMSException,
                                                            org.jboss.internal.soa.esb.rosetta.pooling.ConnectionException
Creates a message producer specific to the subclasses implementation i.e QueueSender or TopicPublisher.

Parameters:
pool -
sAtt -
session -
environment -
Returns:
MessageProducer
Throws:
javax.naming.NamingException
javax.jms.JMSException
org.jboss.internal.soa.esb.rosetta.pooling.ConnectionException

sendNotification

public void sendNotification(Message esbMessage)
                      throws NotificationException
Send a JMS message using p_o to fill in the message content and the list of message properties that will be added to the JMS message header fields

Specified by:
sendNotification in class NotificationTarget
Parameters:
esbMessage - Object - This object or thie object's toString() method will supply contents of JMS message
Throws:
NotificationException - - invoke Exception.getMessage() at runtime for this object
See Also:
CHILD_MSG_PROP

setJMSProperties

protected void setJMSProperties(Message fromESBMessage,
                                javax.jms.Message toJMSMessage)
                         throws javax.jms.JMSException
This method will set appropriate JMSProperties on the outgoing JMSMessage object.

Sublclasses can either override this method add a different behaviour, or they can set the strategy by calling setJmsPropertiesStrategy(JMSPropertiesSetter).

See JMSPropertiesSetter for more info.

Throws:
javax.jms.JMSException

sendToAll

protected void sendToAll(javax.jms.Message p_oMsg)
                  throws javax.jms.JMSException
Template method for sending JMS messages to destinations.

Subclasses implement send(Message, MessageProducer) which performs sending/publishing.

Parameters:
p_oMsg - the JMS Message to send.
Throws:
javax.jms.JMSException - if any of the sends fail a JMSException will be thrown. The exception will contain an error message and stacktrace for every failed send.

setUpProducers

protected void setUpProducers(ConfigTree[] configTrees)
                       throws ConfigurationException,
                              javax.jms.JMSException,
                              org.jboss.internal.soa.esb.rosetta.pooling.ConnectionException
Will setup/create JMS connections, sessions, producers.

Parameters:
configTrees -
Throws:
ConfigurationException
javax.jms.JMSException
org.jboss.internal.soa.esb.rosetta.pooling.ConnectionException

setJmsPropertiesStrategy

public void setJmsPropertiesStrategy(JMSPropertiesSetter jmsPropertiesStrategy)
Sets the strategy for handling the setting of properties on an outgoing JMS Message.

Parameters:
jmsPropertiesStrategy - the strategy to use.