View Javadoc

1   /*** 
2    * 
3    * Copyright 2004 Protique Ltd
4    * 
5    * Licensed under the Apache License, Version 2.0 (the "License"); 
6    * you may not use this file except in compliance with the License. 
7    * You may obtain a copy of the License at 
8    * 
9    * http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS, 
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
14   * See the License for the specific language governing permissions and 
15   * limitations under the License. 
16   * 
17   **/
18  
19  package org.codehaus.activemq.broker;
20  
21  import org.codehaus.activemq.message.ActiveMQMessage;
22  import org.codehaus.activemq.message.ActiveMQXid;
23  import org.codehaus.activemq.message.ConnectionInfo;
24  import org.codehaus.activemq.message.ConsumerInfo;
25  import org.codehaus.activemq.message.DurableUnsubscribe;
26  import org.codehaus.activemq.message.MessageAck;
27  import org.codehaus.activemq.message.ProducerInfo;
28  import org.codehaus.activemq.message.SessionInfo;
29  import org.codehaus.activemq.service.Service;
30  
31  import javax.jms.InvalidClientIDException;
32  import javax.jms.JMSException;
33  import javax.jms.JMSSecurityException;
34  import javax.transaction.xa.XAException;
35  import java.util.List;
36  
37  /***
38   * The ActiveMQ JMS Broker Container which contains a {@link Broker} and one or more
39   * {@ BrokerConnector} instances talking over some {@link org.codehaus.activemq.transport.TransportChannel}
40   *
41   * @version $Revision: 1.4 $
42   */
43  public interface BrokerContainer extends Service {
44  
45      /***
46       * registers a new Connection
47       *
48       * @param client
49       * @param info   infomation about the client-side Connection
50       * @throws InvalidClientIDException if the ClientID of the Connection is a duplicate
51       */
52      public void registerConnection(BrokerClient client, ConnectionInfo info) throws InvalidClientIDException;
53  
54      /***
55       * un-registers a Connection
56       *
57       * @param client
58       * @param info   infomation about the client-side Connection
59       * @throws JMSException
60       */
61      public void deregisterConnection(BrokerClient client, ConnectionInfo info) throws JMSException;
62  
63      /***
64       * Registers a MessageConsumer
65       *
66       * @param client
67       * @param info
68       * @throws JMSException
69       * @throws JMSSecurityException if client authentication fails for the Destination the
70       *                              Consumer applies for
71       */
72      public void registerMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException;
73  
74      /***
75       * De-register a MessageConsumer from the Broker
76       *
77       * @param client
78       * @param info
79       * @throws JMSException
80       */
81      public void deregisterMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException;
82  
83      /***
84       * Registers a MessageProducer
85       *
86       * @param client
87       * @param info
88       * @throws JMSException
89       * @throws JMSSecurityException if client authentication fails for the Destination the
90       *                              Consumer applies for
91       */
92  
93      public void registerMessageProducer(BrokerClient client, ProducerInfo info) throws JMSException;
94  
95      /***
96       * De-register a MessageProducer from the Broker
97       *
98       * @param client
99       * @param info
100      * @throws JMSException
101      */
102     public void deregisterMessageProducer(BrokerClient client, ProducerInfo info) throws JMSException;
103 
104     /***
105      * Register a client-side Session (used for Monitoring)
106      *
107      * @param client
108      * @param info
109      * @throws JMSException
110      */
111 
112     public void registerSession(BrokerClient client, SessionInfo info) throws JMSException;
113 
114     /***
115      * De-register a client-side Session from the Broker (used for monitoring)
116      *
117      * @param client
118      * @param info
119      * @throws JMSException
120      */
121     public void deregisterSession(BrokerClient client, SessionInfo info) throws JMSException;
122 
123     /***
124      * Start a transaction from the Client session
125      *
126      * @param client
127      * @param transactionId
128      * @throws JMSException
129      */
130     public void startTransaction(BrokerClient client, String transactionId) throws JMSException;
131 
132     /***
133      * Rollback a transacton
134      *
135      * @param client
136      * @param transactionId
137      * @throws JMSException
138      */
139     public void rollbackTransaction(BrokerClient client, String transactionId) throws JMSException;
140 
141     /***
142      * Commit a transaction
143      *
144      * @param client
145      * @param transactionId
146      * @throws JMSException
147      */
148     public void commitTransaction(BrokerClient client, String transactionId) throws JMSException;
149 
150     /***
151      * send message with a transaction context
152      *
153      * @param client
154      * @param transactionId
155      * @param message
156      * @throws JMSException
157      */
158     public void sendTransactedMessage(BrokerClient client, String transactionId, ActiveMQMessage message)
159             throws JMSException;
160 
161     /***
162      * Acknowledge receipt of a message within a transaction context
163      *
164      * @param client
165      * @param transactionId
166      * @param ack
167      * @throws JMSException
168      */
169     public void acknowledgeTransactedMessage(BrokerClient client, String transactionId, MessageAck ack)
170             throws JMSException;
171 
172     /***
173      * Send a non-transacted message to the Broker
174      *
175      * @param client
176      * @param message
177      * @throws JMSException
178      */
179 
180     public void sendMessage(BrokerClient client, ActiveMQMessage message) throws JMSException;
181 
182     /***
183      * Acknowledge reciept of a message
184      *
185      * @param client
186      * @param ack
187      * @throws JMSException
188      */
189     public void acknowledgeMessage(BrokerClient client, MessageAck ack) throws JMSException;
190 
191     /***
192      * Command to delete a durable topic subscription
193      *
194      * @param client
195      * @param ds
196      * @throws JMSException
197      */
198 
199     public void durableUnsubscribe(BrokerClient client, DurableUnsubscribe ds) throws JMSException;
200 
201     /***
202      * Start an XA transaction.
203      *
204      * @param client
205      * @param xid
206      */
207     public void startTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
208 
209     /***
210      * Gets the prepared XA transactions.
211      *
212      * @param client
213      * @return
214      */
215     public ActiveMQXid[] getPreparedTransactions(BrokerClient client) throws XAException;
216 
217     /***
218      * Prepare an XA transaction.
219      *
220      * @param client
221      * @param xid
222      */
223     public int prepareTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
224 
225     /***
226      * Rollback an XA transaction.
227      *
228      * @param client
229      * @param xid
230      */
231     public void rollbackTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
232 
233     /***
234      * Commit an XA transaction.
235      *
236      * @param client
237      * @param xid
238      * @param onePhase
239      */
240     public void commitTransaction(BrokerClient client, ActiveMQXid xid, boolean onePhase) throws XAException;
241 
242     /***
243      * Called when a new connector is added to this container
244      *
245      * @param connector
246      */
247     public void addConnector(BrokerConnector connector);
248 
249     /***
250      * Called when a connector is removed to this container
251      *
252      * @param connector
253      */
254     public void removeConnector(BrokerConnector connector);
255 
256 
257     /***
258      * @return the Broker for the Container
259      */
260     public Broker getBroker();
261 
262     List getConnectors();
263 }