001 package jms;
002
003 import com.bea.control.JMSControl;
004 import java.io.Serializable;
005
006 import org.openuri.bea.samples.workshop.jms.account.AccountTransactionDocument;
007 import org.openuri.bea.samples.workshop.jms.account.AccountTransactionDocument.AccountTransaction;
008
009
010 /**
011 *
012 * <p>JMS control used by AccountSubscribe.jws sample. Defines
013 * a single callback named <b>receiveUpdate</b> that is called
014 * when a message arrives on the <tt>jms.AccountUpdate</tt>
015 * topic (while subscribed).</p>
016 *
017 * <p>Note that in all messaging scenarios the sender and
018 * receiver must agree on the message format.</p>
019 *
020 * <p>Notice that this control specifies a value for
021 * receive-jndi-name but not for send-jndi-name since
022 * this control is only used to subscribe to messages.<p>
023
024 * @jc:jms receive-type="topic" receive-jndi-name="jms.AccountUpdate"
025 * connection-factory-jndi-name="weblogic.jws.jms.QueueConnectionFactory"
026 */
027 public interface AccountSubscribeJMSControl extends com.bea.control.ControlExtension, JMSControl
028 {
029 interface Callback extends JMSControl.Callback
030 {
031 /**
032 * <p>Callback that will be invoked whenever a message arrives
033 * on the topic of interest.</p>
034 *
035 * <p>JMS controls that specify a receive-jndi-name may define
036 * exactly one callback that will be invoked when a message
037 * arrives. </p>
038 *
039 * <p>Messages arriving on this topic are expected to have the
040 * transaction type encoded in a JMS property named transactionType,
041 * the account ID encoded in a JMS property named accountIdentifier,
042 * and the transaction amount in the message body.</p>
043 *
044 * <p>JMS messages may also have JMS message headers present. Which
045 * headers (if any) that are set on arriving messages is determined by
046 * the JMS server.</p>
047 *
048 * <p>Theheaders that may be present are:<p>
049 * <ul><li>
050 * JMSCorrelationID
051 * </li><li>
052 * JMSDeliveryMode
053 * </li><li>
054 * JMSExpiration
055 * </li><li>
056 * JMSMessageID
057 * </li><li>
058 * JMSPriority
059 * </li><li>
060 * JMSRedelivered
061 * </li><li>
062 * JMSTimestamp
063 * </li><li>
064 * JMSType
065 * </li></ul>
066 *
067 * @jc:jms-headers
068 * JMSCorrelationID="{CorrelationID}"
069 * JMSDeliveryMode="{DeliveryMode}"
070 * JMSExpiration="{Expiration}"
071 * JMSMessageID="{MessageID}"
072 * JMSPriority="{Priority}"
073 * JMSRedelivered="{Redelivered}"
074 * JMSTimestamp="{Timestamp}"
075 * JMSType="{Type}"
076 *
077 * @jc:jms-property key="accountIdentifier" value="{accountID}"
078 * @jc:jms-property key="transactionType" value="{transactionType}"
079 *
080 */
081 public void receiveUpdate(
082 // Message Body
083 AccountTransaction transaction,
084
085 // Headers
086 String CorrelationID,
087 String DeliveryMode,
088 String Expiration,
089 String MessageID,
090 String Priority,
091 String Redelivered,
092 long Timestamp,
093 String Type,
094
095 // Properties
096 String transactionType,
097 String accountID
098 );
099 }
100 }
|