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 }