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.BrokerInfo;
24 import org.codehaus.activemq.message.ConnectionInfo;
25 import org.codehaus.activemq.message.ConsumerInfo;
26 import org.codehaus.activemq.message.DurableUnsubscribe;
27 import org.codehaus.activemq.message.MessageAck;
28 import org.codehaus.activemq.message.ProducerInfo;
29 import org.codehaus.activemq.message.SessionInfo;
30 import org.codehaus.activemq.service.Service;
31 import org.codehaus.activemq.transport.TransportServerChannel;
32
33 import javax.jms.JMSException;
34 import javax.jms.JMSSecurityException;
35 import javax.transaction.xa.XAException;
36
37 /***
38 * The Broker is the client side interface to the JMS server
39 *
40 * @version $Revision: 1.4 $
41 */
42 public interface BrokerConnector extends Service {
43
44 /***
45 * @return infomation about the Broker
46 */
47 public BrokerInfo getBrokerInfo();
48
49 /***
50 * @return the transport channel this broker is using
51 */
52 public TransportServerChannel getServerChannel();
53
54 /***
55 * Get a hint about the broker capacity for more messages
56 *
57 * @return percentage value (0-100) about how much capacity the
58 * broker has
59 */
60 public int getBrokerCapacity();
61
62 /***
63 * Register a Broker Client
64 *
65 * @param client
66 * @param info contains infomation about the Connection this Client
67 * represents
68 * @throws JMSException
69 * @throws javax.jms.InvalidClientIDException
70 * if the JMS client specifies an invalid or duplicate client
71 * ID.
72 * @throws JMSSecurityException if client authentication fails due to an invalid user name or
73 * password.
74 */
75 public void registerClient(BrokerClient client, ConnectionInfo info) throws JMSException;
76
77 /***
78 * Deregister a Broker Client
79 *
80 * @param client
81 * @param info
82 * @throws JMSException if some internal error occurs
83 */
84
85 public void deregisterClient(BrokerClient client, ConnectionInfo info) throws JMSException;
86
87 /***
88 * Registers a MessageConsumer
89 *
90 * @param client
91 * @param info
92 * @throws JMSException
93 * @throws JMSSecurityException if client authentication fails for the Destination the
94 * Consumer applies for
95 */
96 public void registerMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException;
97
98 /***
99 * De-register a MessageConsumer from the Broker
100 *
101 * @param client
102 * @param info
103 * @throws JMSException
104 */
105 public void deregisterMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException;
106
107 /***
108 * Registers a MessageProducer
109 *
110 * @param client
111 * @param info
112 * @throws JMSException
113 * @throws JMSSecurityException if client authentication fails for the Destination the
114 * Consumer applies for
115 */
116
117 public void registerMessageProducer(BrokerClient client, ProducerInfo info) throws JMSException;
118
119 /***
120 * De-register a MessageProducer from the Broker
121 *
122 * @param client
123 * @param info
124 * @throws JMSException
125 */
126 public void deregisterMessageProducer(BrokerClient client, ProducerInfo info) throws JMSException;
127
128 /***
129 * Register a client-side Session (used for Monitoring)
130 *
131 * @param client
132 * @param info
133 * @throws JMSException
134 */
135
136 public void registerSession(BrokerClient client, SessionInfo info) throws JMSException;
137
138 /***
139 * De-register a client-side Session from the Broker (used for monitoring)
140 *
141 * @param client
142 * @param info
143 * @throws JMSException
144 */
145 public void deregisterSession(BrokerClient client, SessionInfo info) throws JMSException;
146
147 /***
148 * Start a transaction from the Client session
149 *
150 * @param client
151 * @param transactionId
152 * @throws JMSException
153 */
154 public void startTransaction(BrokerClient client, String transactionId) throws JMSException;
155
156 /***
157 * Rollback a transacton
158 *
159 * @param client
160 * @param transactionId
161 * @throws JMSException
162 */
163 public void rollbackTransaction(BrokerClient client, String transactionId) throws JMSException;
164
165 /***
166 * Commit a transaction
167 *
168 * @param client
169 * @param transactionId
170 * @throws JMSException
171 */
172 public void commitTransaction(BrokerClient client, String transactionId) throws JMSException;
173
174
175 /***
176 * Start an XA transaction
177 *
178 * @param client
179 * @param xid
180 * @throws XAException
181 */
182 public void startTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
183
184 /***
185 * Get all the Xids of the prepared XA transactions.
186 *
187 * @param client
188 * @return
189 * @throws XAException
190 */
191 public ActiveMQXid[] getPreparedTransactions(BrokerClient client) throws XAException;
192
193 /***
194 * Prepare an XA transaction.
195 *
196 * @param client
197 * @param xid
198 * @return
199 * @throws XAException
200 */
201 public int prepareTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
202
203 /***
204 * Rollback an XA transaction.
205 *
206 * @param client
207 * @param xid
208 * @throws XAException
209 */
210 public void rollbackTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
211
212 /***
213 * Commit an XA transaction.
214 *
215 * @param client
216 * @param xid
217 * @param onePhase
218 * @throws XAException
219 */
220 public void commitTransaction(BrokerClient client, ActiveMQXid xid, boolean onePhase) throws XAException;
221
222 /***
223 * send message with a transaction context
224 *
225 * @param client
226 * @param transactionId
227 * @param message
228 * @throws JMSException
229 */
230 public void sendTransactedMessage(BrokerClient client, String transactionId, ActiveMQMessage message)
231 throws JMSException;
232
233 /***
234 * Acknowledge receipt of a message within a transaction context
235 *
236 * @param client
237 * @param transactionId
238 * @param ack
239 * @throws JMSException
240 */
241 public void acknowledgeTransactedMessage(BrokerClient client, String transactionId, MessageAck ack)
242 throws JMSException;
243
244 /***
245 * Send a non-transacted message to the Broker
246 *
247 * @param client
248 * @param message
249 * @throws JMSException
250 */
251
252 public void sendMessage(BrokerClient client, ActiveMQMessage message) throws JMSException;
253
254 /***
255 * Acknowledge reciept of a message
256 *
257 * @param client
258 * @param ack
259 * @throws JMSException
260 */
261 public void acknowledgeMessage(BrokerClient client, MessageAck ack) throws JMSException;
262
263 /***
264 * Command to delete a durable topic subscription
265 *
266 * @param client
267 * @param ds
268 * @throws JMSException
269 */
270
271 public void durableUnsubscribe(BrokerClient client, DurableUnsubscribe ds) throws JMSException;
272
273 /***
274 * Gets the unique id of the resource manager used for managing xa
275 * transactions.
276 *
277 * @param client
278 * @return the id
279 */
280 public String getResourceManagerId(BrokerClient client);
281
282 /***
283 * @return the BrokerContainer for this Connector
284 */
285 public BrokerContainer getBrokerContainer();
286
287
288 }