001: /*
002: * HsqlDBEngineClient: The hsql database engine wrapper.
003: * Copyright (C) 2006 Rift IT Contracting
004: *
005: * This library is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU Lesser General Public
007: * License as published by the Free Software Foundation; either
008: * version 2.1 of the License, or (at your option) any later version.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * Lesser General Public License for more details.
014: *
015: * You should have received a copy of the GNU Lesser General Public
016: * License along with this library; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
018: *
019: * HsqlDBEngine.java
020: */
021:
022: // package path
023: package com.rift.coad.daemon.hsqldb;
024:
025: // java imports
026: import java.rmi.Remote;
027: import java.rmi.RemoteException;
028:
029: /**
030: * This interface supplies access to the Hsql server methods.
031: *
032: * @author Brett Chaldecott
033: */
034: public interface HsqlDBEngineMBean extends Remote {
035:
036: /**
037: * Retrieves, in string form, this server's host address.
038: *
039: * @return this server's host address
040: *
041: * @jmx.managed-attribute
042: * access="read-write"
043: * description="Host InetAddress"
044: * @exception RemoteException
045: * @exception HsqlDBEngineException
046: */
047: public String getAddress() throws RemoteException,
048: HsqlDBEngineException;
049:
050: /**
051: * Retrieves the url alias (network name) of the i'th database
052: * that this Server hosts.
053: *
054: * @param index the index of the url alias upon which to report
055: * @param asconfigured if true, report the configured value, else
056: * the live value
057: * @return the url alias component of the i'th database
058: * that this Server hosts, or null if no such name exists.
059: *
060: * @jmx.managed-operation
061: * impact="INFO"
062: * description="url alias component of the i'th hosted Database"
063: *
064: * @jmx.managed-operation-parameter
065: * name="index"
066: * type="int"
067: * position="0"
068: * description="This Server's index for the hosted Database"
069: *
070: * @jmx.managed-operation-parameter
071: * name="asconfigured"
072: * type="boolean"
073: * position="1"
074: * description="if true, the configured value, else the live value"
075: *
076: * @exception RemoteException
077: * @exception HsqlDBEngineException
078: */
079: public String getDatabaseName(int index, boolean asconfigured)
080: throws RemoteException, HsqlDBEngineException;
081:
082: /**
083: * Retrieves the HSQLDB path descriptor (uri) of the i'th
084: * Database that this Server hosts.
085: *
086: * @param index the index of the uri upon which to report
087: * @param asconfigured if true, report the configured value, else
088: * the live value
089: * @return the HSQLDB database path descriptor of the i'th database
090: * that this Server hosts, or null if no such path descriptor
091: * exists
092: *
093: * @jmx.managed-operation
094: * impact="INFO"
095: * description="For i'th hosted database"
096: *
097: * @jmx.managed-operation-parameter
098: * name="index"
099: * type="int"
100: * position="0"
101: * description="This Server's index for the hosted Database"
102: *
103: * @jmx.managed-operation-parameter
104: * name="asconfigured"
105: * type="boolean"
106: * position="1"
107: * description="if true, the configured value, else the live value"
108: *
109: * @exception RemoteException
110: * @exception HsqlDBEngineException
111: */
112: public String getDatabasePath(int index, boolean asconfigured)
113: throws RemoteException, HsqlDBEngineException;
114:
115: /**
116: * This method returns the HsqlDB type
117: *
118: * @return A string containing the type of this db.
119: * @param index The index of this type.
120: * @exception RemoteException
121: * @exception HsqlDBEngineException
122: */
123: public String getDatabaseType(int index) throws RemoteException,
124: HsqlDBEngineException;
125:
126: /**
127: * Retrieves this server's host port.
128: *
129: * @return this server's host port
130: *
131: * @jmx.managed-attribute
132: * access="read-write"
133: * description="At which ServerSocket listens for connections"
134: *
135: * @exception RemoteException
136: * @exception HsqlDBEngineException
137: */
138: public int getPort() throws RemoteException, HsqlDBEngineException;
139:
140: /**
141: * Retrieves this server's product name. <p>
142: *
143: * Typically, this will be something like: "HSQLDB xxx server".
144: *
145: * @return the product name of this server
146: *
147: * @jmx.managed-attribute
148: * access="read-only"
149: * description="Of Server"
150: *
151: * @exception RemoteException
152: * @exception HsqlDBEngineException
153: */
154: public String getProductName() throws RemoteException,
155: HsqlDBEngineException;
156:
157: /**
158: * Retrieves the server's product version, as a String. <p>
159: *
160: * Typically, this will be something like: "1.x.x" or "2.x.x" and so on.
161: *
162: * @return the product version of the server
163: *
164: * @jmx.managed-attribute
165: * access="read-only"
166: * description="Of Server"
167: *
168: * @exception RemoteException
169: * @exception HsqlDBEngineException
170: */
171: public String getProductVersion() throws RemoteException,
172: HsqlDBEngineException;
173:
174: /**
175: * Retrieves a string respresentaion of the network protocol
176: * this server offers, typically one of 'HTTP', HTTPS', 'HSQL' or 'HSQLS'.
177: *
178: * @return string respresentation of this server's protocol
179: *
180: * @jmx.managed-attribute
181: * access="read-only"
182: * description="Used to handle connections"
183: *
184: * @exception RemoteException
185: * @exception HsqlDBEngineException
186: */
187: public String getProtocol() throws RemoteException,
188: HsqlDBEngineException;
189:
190: /**
191: * Retrieves a String identifying this Server object.
192: *
193: * @return a String identifying this Server object
194: *
195: * @jmx.managed-attribute
196: * access="read-only"
197: * description="Identifying Server"
198: *
199: * @exception RemoteException
200: * @exception HsqlDBEngineException
201: */
202: public String getServerId() throws RemoteException,
203: HsqlDBEngineException;
204:
205: /**
206: * Retrieves current state of this server in numerically coded form. <p>
207: *
208: * Typically, this will be one of: <p>
209: *
210: * <ol>
211: * <li>ServerProperties.SERVER_STATE_ONLINE (1)
212: * <li>ServerProperties.SERVER_STATE_OPENING (4)
213: * <li>ServerProperties.SERVER_STATE_CLOSING (8)
214: * <li>ServerProperties.SERVER_STATE_SHUTDOWN (16)
215: * </ol>
216: *
217: * @return this server's state code.
218: *
219: * @jmx.managed-attribute
220: * access="read-only"
221: * description="1:ONLINE 4:OPENING 8:CLOSING, 16:SHUTDOWN"
222: *
223: * @exception RemoteException
224: * @exception HsqlDBEngineException
225: */
226: public int getState() throws RemoteException, HsqlDBEngineException;
227:
228: /**
229: * Retrieves a character sequence describing this server's current state,
230: * including the message of the last exception, if there is one and it
231: * is still in context.
232: *
233: * @return this server's state represented as a character sequence.
234: *
235: * @jmx.managed-attribute
236: * access="read-only"
237: * description="State as string"
238: *
239: * @exception RemoteException
240: * @exception HsqlDBEngineException
241: */
242: public String getStateDescriptor() throws RemoteException,
243: HsqlDBEngineException;
244:
245: /**
246: * Retrieves whether the use of secure sockets was requested in the
247: * server properties.
248: *
249: * @return if true, secure sockets are requested, else not
250: *
251: * @jmx.managed-attribute
252: * access="read-write"
253: * description="Use TLS/SSL sockets?"
254: *
255: * @exception RemoteException
256: * @exception HsqlDBEngineException
257: */
258: public boolean isTls() throws RemoteException,
259: HsqlDBEngineException;
260:
261: /**
262: * Attempts to put properties from the file
263: * with the specified path. The file
264: * extension '.properties' is implicit and should not
265: * be included in the path specification.
266: *
267: * @param path the path of the desired properties file, without the
268: * '.properties' file extension
269: * @throws RuntimeException if this server is running
270: * @return true if the indicated file was read sucessfully, else false
271: *
272: * @jmx.managed-operation
273: * impact="ACTION"
274: * description="Reads in properties"
275: *
276: * @jmx.managed-operation-parameter
277: * name="path"
278: * type="java.lang.String"
279: * position="0"
280: * description="(optional) returns false if path is empty"
281: *
282: * @exception RemoteException
283: * @exception HsqlDBEngineException
284: */
285: public boolean putPropertiesFromFile(String path)
286: throws RemoteException, HsqlDBEngineException;
287:
288: /**
289: * Puts properties from the supplied string argument. The relevant
290: * key value pairs are the same as those for the (web)server.properties
291: * file format, except that the 'server.' prefix should not be specified.
292: *
293: * @param s semicolon-delimited key=value pair string,
294: * e.g. k1=v1;k2=v2;k3=v3...
295: * @throws RuntimeException if this server is running
296: *
297: * @jmx.managed-operation
298: * impact="ACTION"
299: * description="'server.' key prefix automatically supplied"
300: *
301: * @jmx.managed-operation-parameter
302: * name="s"
303: * type="java.lang.String"
304: * position="0"
305: * description="semicolon-delimited key=value pairs"
306: *
307: * @exception RemoteException
308: * @exception HsqlDBEngineException
309: */
310: public void putPropertiesFromString(String s)
311: throws RemoteException, HsqlDBEngineException;
312:
313: }
|