1 /***
2 * Redistribution and use of this software and associated documentation
3 * ("Software"), with or without modification, are permitted provided
4 * that the following conditions are met:
5 *
6 * 1. Redistributions of source code must retain copyright
7 * statements and notices. Redistributions must also contain a
8 * copy of this document.
9 *
10 * 2. Redistributions in binary form must reproduce the
11 * above copyright notice, this list of conditions and the
12 * following disclaimer in the documentation and/or other
13 * materials provided with the distribution.
14 *
15 * 3. The name "Exolab" must not be used to endorse or promote
16 * products derived from this Software without prior written
17 * permission of Exoffice Technologies. For written permission,
18 * please contact info@exolab.org.
19 *
20 * 4. Products derived from this Software may not be called "Exolab"
21 * nor may "Exolab" appear in their names without prior written
22 * permission of Exoffice Technologies. Exolab is a registered
23 * trademark of Exoffice Technologies.
24 *
25 * 5. Due credit should be given to the Exolab Project
26 * (http://www.exolab.org/).
27 *
28 * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS
29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
32 * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
39 * OF THE POSSIBILITY OF SUCH DAMAGE.
40 *
41 * Copyright 2000-2001,2003 (C) Exoffice Technologies Inc. All Rights Reserved.
42 *
43 * $Id: RmiJmsAdminConnection.java,v 1.14 2003/08/07 13:32:48 tanderson Exp $
44 *
45 * Date Author Changes
46 * $Date jimm Created
47 */
48 package org.exolab.jms.administration.rmi;
49
50 import java.rmi.Naming;
51 import java.util.Vector;
52
53 import javax.jms.JMSException;
54
55 import org.apache.commons.logging.Log;
56 import org.apache.commons.logging.LogFactory;
57
58 import org.exolab.jms.administration.AdminConnection;
59 import org.exolab.jms.administration.JmsAdminServerIfc;
60 import org.exolab.jms.server.rmi.RemoteJmsAdminConnectionIfc;
61 import org.exolab.jms.server.rmi.RemoteJmsAdminServerIfc;
62 import org.exolab.jms.util.UUID;
63
64
65 /***
66 * This class is repsonsible for an admin connection to the RMI server
67 *
68 * @version $Revision: 1.14 $ $Date: 2003/08/07 13:32:48 $
69 * @author <a href="mailto:mourikis@intalio.com">Jim Mourikis</a>
70 * @see org.exolab.jms.server.rmi.RmiJmsAdminServer
71 * @see org.exolab.jms.administration.AdminConnectionFactory
72 */
73 public class RmiJmsAdminConnection
74 implements JmsAdminServerIfc, AdminConnection {
75
76 /***
77 * The rmi connection to the OpenJMS server
78 */
79 private RemoteJmsAdminServerIfc _delegate = null;
80
81 /***
82 * The rmi connection to the OpenJMS server
83 */
84 private RemoteJmsAdminConnectionIfc _admin = null;
85
86 /***
87 * The logger
88 */
89 private static final Log _log =
90 LogFactory.getLog(RmiJmsAdminConnection.class);
91
92 /***
93 * The server host address
94 */
95 private String _serverAddress;
96
97 /***
98 * The server name
99 */
100 private String _name;
101
102 /***
103 * The port number the server is listening to
104 */
105 private int _port;
106
107 /***
108 * The clientId
109 */
110 private String _clientId = null;
111
112
113 /***
114 * Create the connection to the server, using the specified host, port
115 * and registry binding
116 *
117 * @param host the server host
118 * @param port the server port
119 * @param name the name of the admin server, bound in the registry. May
120 * be null
121 */
122 public RmiJmsAdminConnection(String host, int port, String name,
123 String username, String password)
124 throws JMSException {
125 _serverAddress = host;
126 _port = port;
127 _name = name;
128 _clientId = UUID.next();
129
130 connect(_clientId, username, password);
131 }
132
133 // implementation of JmsAdminServerIfc.addDurableConsumer
134 public boolean addDurableConsumer(String topic, String name)
135 throws JMSException {
136 boolean result = false;
137 try {
138 result = _admin.addDurableConsumer(topic, name);
139 } catch (Exception exception) {
140 raise(exception);
141 }
142 return result;
143 }
144
145 // implementation of JmsAdminServerIfc.removeDurableConsumer
146 public boolean removeDurableConsumer(String name) throws JMSException {
147 boolean result = false;
148 try {
149 result = _admin.removeDurableConsumer(name);
150 } catch (Exception exception) {
151 raise(exception);
152 }
153 return result;
154 }
155
156 // implementation of JmsAdminServerIfc.durableConsumerExists
157 public boolean durableConsumerExists(String name) throws JMSException {
158 boolean result = false;
159 try {
160 result = _admin.durableConsumerExists(name);
161 } catch (Exception exception) {
162 raise(exception);
163 }
164 return result;
165 }
166
167 // implementation of JmsAdminServerIfc.getDurableConsumers
168 public Vector getDurableConsumers(String topic) throws JMSException {
169 Vector result = null;
170 try {
171 result = _admin.getDurableConsumers(topic);
172 } catch (Exception exception) {
173 raise(exception);
174 }
175 return result;
176 }
177
178 // implementation of JmsAdminServerIfc.unregisterConsumer
179 public boolean unregisterConsumer(String name) throws JMSException {
180 boolean result = false;
181 try {
182 result = _admin.unregisterConsumer(name);
183 } catch (Exception exception) {
184 raise(exception);
185 }
186 return result;
187 }
188
189 // implementation of JmsAdminServerIfc.isConnected
190 public boolean isConnected(String name) throws JMSException {
191 boolean result = false;
192 try {
193 result = _admin.isConnected(name);
194 } catch (Exception exception) {
195 raise(exception);
196 }
197 return result;
198 }
199
200 // implementation of JmsAdminServerIfc.addDestination
201 public boolean addDestination(String destination, Boolean queue)
202 throws JMSException {
203 boolean result = false;
204 try {
205 result = _admin.addDestination(destination, queue);
206 } catch (Exception exception) {
207 raise(exception);
208 }
209 return result;
210 }
211
212 // implementation of JmsAdminServerIfc.removeDestination
213 public boolean removeDestination(String name) throws JMSException {
214 boolean result = false;
215 try {
216 result = _admin.removeDestination(name);
217 } catch (Exception exception) {
218 raise(exception);
219 }
220 return result;
221 }
222
223 // implementation of JmsAdminServerIfc.destinationExists
224 public boolean destinationExists(String name) throws JMSException {
225 boolean result = false;
226 try {
227 result = _admin.destinationExists(name);
228 } catch (Exception exception) {
229 raise(exception);
230 }
231 return result;
232 }
233
234 // implementation of JmsAdminServerIfc.getAllDestinations
235 public Vector getAllDestinations() throws JMSException {
236 Vector result = null;
237 try {
238 result = _admin.getAllDestinations();
239 } catch (Exception exception) {
240 raise(exception);
241 }
242 return result;
243 }
244
245 // implementation of JmsAdminServerIfc.getDurableConsumerMessageCount
246 public int getDurableConsumerMessageCount(String topic, String name)
247 throws JMSException {
248 int result = 0;
249 try {
250 result = _admin.getDurableConsumerMessageCount(topic, name);
251 } catch (Exception exception) {
252 raise(exception);
253 }
254 return result;
255 }
256
257 // implementation of JmsAdminServerIfc.getDurableConsumerMessageCount
258 public int getQueueMessageCount(String queue) throws JMSException {
259 int result = 0;
260 try {
261 result = _admin.getQueueMessageCount(queue);
262 } catch (Exception exception) {
263 raise(exception);
264 }
265 return result;
266 }
267
268 // implementation of JmsAdminServerIfc.purgeMessages
269 public int purgeMessages() throws JMSException {
270 int result = 0;
271 try {
272 result = _admin.purgeMessages();
273 } catch (Exception exception) {
274 raise(exception);
275 }
276 return result;
277 }
278
279 // implementation of JmsAdminServerIfc.stopServer
280 public void stopServer() throws JMSException {
281 try {
282 _admin.stopServer();
283 } catch (Exception exception) {
284 raise(exception);
285 }
286 }
287
288 // implementation of JmsAdminServerIfc.close
289 public void close() {
290 _admin = null;
291 }
292
293 protected void openConnection() throws JMSException {
294 try {
295 if (_name == null) {
296 _name = "JmsAdminServer";
297 }
298 String url = "//" + _serverAddress + ":" + _port + "/" + _name;
299 _delegate = (RemoteJmsAdminServerIfc) Naming.lookup(url);
300 } catch (Exception exception) {
301 raise(exception);
302 }
303 }
304
305 /***
306 * Authenticates username/password
307 *
308 * @param clientId the client's id
309 * @param username the user's name
310 * @param password the user's password
311 * @throws JMSException if the client cannot be authenticated
312 */
313 private void connect(String clientId, String username, String password)
314 throws JMSException {
315 openConnection();
316
317 try {
318 _admin = getDelegate().
319 createConnection(clientId, username, password);
320 } catch (Exception exception) {
321 raise(exception);
322 }
323 }
324
325 private void raise(Exception exception) throws JMSException {
326 if (exception instanceof JMSException) {
327 throw (JMSException) exception;
328 } else {
329 JMSException error = new JMSException(exception.getMessage());
330 error.setLinkedException(exception);
331 throw error;
332 }
333 }
334
335 // implementation of JmsAdminServerIfc.addUser
336 public boolean addUser(String username, String password)
337 throws JMSException {
338 boolean result = false;
339 try {
340 result = _admin.addUser(username, password);
341 } catch (Exception exception) {
342 raise(exception);
343 }
344 return result;
345 }
346
347 // implementation of JmsAdminServerIfc.getAllUsers
348 public Vector getAllUsers() throws JMSException {
349 Vector result = null;
350 try {
351 result = _admin.getAllUsers();
352 } catch (Exception exception) {
353 raise(exception);
354 }
355 return result;
356 }
357
358 // implementation of JmsAdminServerIfc.removeUser
359 public boolean removeUser(String username)
360 throws JMSException {
361 boolean result = false;
362 try {
363 result = _admin.removeUser(username);
364 } catch (Exception exception) {
365 raise(exception);
366 }
367 return result;
368 }
369
370 // implementation of JmsAdminServerIfc.changePassword
371 public boolean changePassword(String username, String password)
372 throws JMSException {
373 boolean result = false;
374 try {
375 result = _admin.changePassword(username, password);
376 } catch (Exception exception) {
377 raise(exception);
378 }
379 return result;
380 }
381
382 /*** Getter for property _delegate.
383 * @return Value of property _delegate.
384 *
385 */
386 public RemoteJmsAdminServerIfc getDelegate() {
387 return _delegate;
388 }
389
390 } //-- RmiJmsAdminConnection
This page was automatically generated by Maven