Starting Multiple Servers
A HyperSQL server can be started very
simply to serve multiple databases. In fact, the Server implementation
is so flexible that you can start two servers, running on different
ports, to serve the same databases. This example was developed by
Larissa Janssen to start an SSL server for external access, together
with a local server.
UNIX and Linux users don't need to write a program or assemble a Java command as described below, because HyperSQL comes with an init script that does this for
you.
See
this section of the
User Guide and read the comments about the
INVOC_ADDL_ARGS
setting in the init script config file.
################ my hsqldb start class ############
package myApplication;
...
import org.hsqldb.persist.HsqlProperties;
import org.hsqldb.server.Server;
import org.hsqldb.server.ServerConfiguration;
import org.hsqldb.server.ServerAcl.AclFormatException;
/**
* do start one Hsqldb-Server with two Ports: 554 and 9001. Port 554 must be first started.
*/
public class HSQLDBServerTest {
public static void main(String[] args) {
System.out.println("*************** SSL *****************");
Server.main(new String[] {});
System.out.println("*************** Localhost *****************");
Server server2 = new Server();
boolean read2 = server2.putPropertiesFromFile("serverLocal");
if (read2) {
server2.start();
}
}
}
##################
An alternative to using the above program is the MainInvoker class. This class can invoke two or more main() methods from different classes.
http://hsqldb.org/doc/2.0/apidocs/org/hsqldb/util/MainInvoker.html
java -cp... org.hsqldb.util.MainInvoker org.hsqldb.server.Server "" org.hsqldb.server.Server --port 9002 --tls false
##################
Server-Properties for SSL (standard name server.properties):
server.port=554
server.database.0=file:D:/hsqldbs/plus/db/plus
server.dbname.0=plus
server.database.1=file:D:/hsqldbs/plus1/db/plus1
server.dbname.1=plus1
server.database.2=file:D:/hsqldbs/plus2/db/plus2
server.dbname.2=plus2
server.database.3=file:D:/hsqldbs/plus3/db/plus3
server.dbname.3=plus3
server.silent=true
system.javax.net.ssl.keyStore=D:/hsqldbs/server.keystore
system.javax.net.ssl.keyStorePassword=testLa
server.tls=true
server.no_system_exit=false
#######################
Server-Properties for Localhost (name serverLocal.properties):
server.port=9001
server.database.0=file:D:/hsqldbs/plus/db/plus
server.dbname.0=plus
server.database.1=file:D:/hsqldbs/plus1/db/plus1
server.dbname.1=plus1
server.database.2=file:D:/hsqldbs/plus2/db/plus2
server.dbname.2=plus2
server.database.3=file:D:/hsqldbs/plus3/db/plus3
server.dbname.3=plus3
server.silent=true
server.no_system_exit=false
############################
My Programm for starting hsqldb:
--cd to hsqldb-Home (here is this file server.properies)
cd D:/hsqldbs
%JAVA_HOME%\bin\java -classpath "D:\Tomcat\lib\hsqldb.jar;D:\Tomcat\lib\sqltool.jar;myApplication.jar" myApplication.HSQLDBServerTest
Finish!
#######################
Here is start sample:
*************** SSL *****************
[Server@3f437c]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@3f437c]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@3f437c]: Startup sequence initiated from main() method
[Server@3f437c]: Loaded properties from [D:\hsqldbs\server.properties]
[Server@3f437c]: Initiating startup sequence...
[Server@3f437c]: Server socket opened successfully in 468 ms.
[Server@3f437c]: Using TLS/SSL-encrypted JDBC
[Server@3f437c]: Database [index=0, id=0, db=file:D:/hsqldbs/plus3/db/plus3, alias=plus3] opened sucessfully in 829 ms.
[Server@3f437c]: Database [index=1, id=1, db=file:D:/hsqldbs/plus2/db/plus2, alias=plus2] opened sucessfully in 500 ms.
[Server@3f437c]: Database [index=2, id=2, db=file:D:/hsqldbs/plus1/db/plus1, alias=plus1] opened sucessfully in 375 ms.
[Server@3f437c]: Database [index=3, id=3, db=file:D:/hsqldbs/plus/db/plus, alias=plus] opened sucessfully in 250 ms.
[Server@3f437c]: Startup sequence completed in 2422 ms.
[Server@3f437c]: 2010-05-27 14:34:31.381 HSQLDB server 2.0.0 is online on port 554
[Server@3f437c]: To close normally, connect and execute SHUTDOWN SQL
[Server@3f437c]: From command line, use [Ctrl]+[C] to abort abruptly
*************** Localhost *****************
[Server@1a1f635]: [Thread[main,5,main]]: putPropertiesFromFile(): [D:\hsqldbs\serverLocal.properties]
[Server@1a1f635]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@1a1f635]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@1a1f635]: Initiating startup sequence...
[Server@1a1f635]: Server socket opened successfully in 0 ms.
[Server@1a1f635]: Database [index=0, id=0, db=file:D:/hsqldbs/plus3/db/plus3, alias=plus3] opened sucessfully in 0 ms.
[Server@1a1f635]: Database [index=1, id=1, db=file:D:/hsqldbs/plus2/db/plus2, alias=plus2] opened sucessfully in 0 ms.
[Server@1a1f635]: Database [index=2, id=2, db=file:D:/hsqldbs/plus1/db/plus1, alias=plus1] opened sucessfully in 16 ms.
[Server@1a1f635]: Database [index=3, id=3, db=file:D:/hsqldbs/plus/db/plus, alias=plus] opened sucessfully in 0 ms.
[Server@1a1f635]: Startup sequence completed in 16 ms.
[Server@1a1f635]: 2010-05-27 14:34:31.459 HSQLDB server 2.0.0 is online on port 9001
[Server@1a1f635]: To close normally, connect and execute SHUTDOWN SQL
[Server@1a1f635]: From command line, use [Ctrl]+[C] to abort abruptly