Package org.h2.tools
Class Server
- java.lang.Object
-
- org.h2.util.Tool
-
- org.h2.tools.Server
-
- All Implemented Interfaces:
java.lang.Runnable
,ShutdownHandler
public class Server extends Tool implements java.lang.Runnable, ShutdownHandler
Starts the H2 Console (web-) server, TCP, and PG server.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static Server
createPgServer(java.lang.String... args)
Create a new PG server, but does not start it yet.static Server
createTcpServer(java.lang.String... args)
Create a new TCP server, but does not start it yet.static Server
createWebServer(java.lang.String... args)
Create a new web server, but does not start it yet.(package private) static Server
createWebServer(java.lang.String[] args, java.lang.String key, boolean allowSecureCreation)
Create a new web server, but does not start it yet.int
getPort()
Gets the port this server is listening on.Service
getService()
Get the service attached to this server.java.lang.String
getStatus()
Get the status of this server.java.lang.String
getURL()
Gets the URL of this server.boolean
isRunning(boolean traceError)
Checks if the server is running.static void
main(java.lang.String... args)
When running without options, -tcp, -web, -browser and -pg are started.static void
openBrowser(java.lang.String url)
Open a new browser tab or window with the given URL.void
run()
INTERNALvoid
runTool(java.lang.String... args)
Run the tool with the given output stream and arguments.void
setShutdownHandler(ShutdownHandler shutdownHandler)
INTERNALvoid
shutdown()
INTERNALstatic void
shutdownTcpServer(java.lang.String url, java.lang.String password, boolean force, boolean all)
Shutdown one or all TCP server.Server
start()
Tries to start the server.static void
startWebServer(java.sql.Connection conn)
Start a web server and a browser that uses the given connection.static void
startWebServer(java.sql.Connection conn, boolean ignoreProperties)
Start a web server and a browser that uses the given connection.void
stop()
Stops the server.private void
stopAll()
private void
verifyArgs(java.lang.String... args)
private static void
wait(int i)
-
Methods inherited from class org.h2.util.Tool
isOption, printNoDatabaseFilesFound, setOut, showUsage, showUsageAndThrowUnsupportedOption, throwUnsupportedOption
-
-
-
-
Field Detail
-
service
private final Service service
-
web
private Server web
-
tcp
private Server tcp
-
pg
private Server pg
-
shutdownHandler
private ShutdownHandler shutdownHandler
-
started
private boolean started
-
-
Constructor Detail
-
Server
public Server()
-
Server
public Server(Service service, java.lang.String... args) throws java.sql.SQLException
Create a new server for the given service.- Parameters:
service
- the serviceargs
- the command line arguments- Throws:
java.sql.SQLException
- on failure
-
-
Method Detail
-
main
public static void main(java.lang.String... args) throws java.sql.SQLException
When running without options, -tcp, -web, -browser and -pg are started. Options are case sensitive.Supported options [-help] or [-?] Print the list of options [-web] Start the web server with the H2 Console [-webAllowOthers] Allow other computers to connect - see below [-webExternalNames <names>] The comma-separated list of external names and IP addresses of this server, used together with -webAllowOthers [-webDaemon] Use a daemon thread [-webPort <port>] The port (default: 8082) [-webSSL] Use encrypted (HTTPS) connections [-webAdminPassword] Password of DB Console administrator [-browser] Start a browser connecting to the web server [-tcp] Start the TCP server [-tcpAllowOthers] Allow other computers to connect - see below [-tcpDaemon] Use a daemon thread [-tcpPort <port>] The port (default: 9092) [-tcpSSL] Use encrypted (SSL) connections [-tcpPassword <pwd>] The password for shutting down a TCP server [-tcpShutdown "<url>"] Stop the TCP server; example: tcp://localhost [-tcpShutdownForce] Do not wait until all connections are closed [-pg] Start the PG server [-pgAllowOthers] Allow other computers to connect - see below [-pgDaemon] Use a daemon thread [-pgPort <port>] The port (default: 5435) [-properties "<dir>"] Server properties (default: ~, disable: null) [-baseDir <dir>] The base directory for H2 databases (all servers) [-ifExists] Only existing databases may be opened (all servers) [-ifNotExists] Databases are created when accessed [-trace] Print additional trace information (all servers) [-key <from> <to>] Allows to map a database name to another (all servers) - Parameters:
args
- the command line arguments- Throws:
java.sql.SQLException
- on failure
-
verifyArgs
private void verifyArgs(java.lang.String... args) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
runTool
public void runTool(java.lang.String... args) throws java.sql.SQLException
Description copied from class:Tool
Run the tool with the given output stream and arguments.
-
shutdownTcpServer
public static void shutdownTcpServer(java.lang.String url, java.lang.String password, boolean force, boolean all) throws java.sql.SQLException
Shutdown one or all TCP server. If force is set to false, the server will not allow new connections, but not kill existing connections, instead it will stop if the last connection is closed. If force is set to true, existing connections are killed. After calling the method with force=false, it is not possible to call it again with force=true because new connections are not allowed. Example:Server.shutdownTcpServer("tcp://localhost:9094", password, true, false);
- Parameters:
url
- example: tcp://localhost:9094password
- the password to use ("" for no password)force
- the shutdown (don't wait)all
- whether all TCP servers that are running in the JVM should be stopped- Throws:
java.sql.SQLException
- on failure
-
getStatus
public java.lang.String getStatus()
Get the status of this server.- Returns:
- the status
-
createWebServer
public static Server createWebServer(java.lang.String... args) throws java.sql.SQLException
Create a new web server, but does not start it yet. Example:Server server = Server.createWebServer("-trace").start();
Supported options are: -webPort, -webSSL, -webAllowOthers, -webDaemon, -trace, -ifExists, -ifNotExists, -baseDir, -properties. See the main method for details.- Parameters:
args
- the argument list- Returns:
- the server
- Throws:
java.sql.SQLException
- on failure
-
createWebServer
static Server createWebServer(java.lang.String[] args, java.lang.String key, boolean allowSecureCreation) throws java.sql.SQLException
Create a new web server, but does not start it yet.- Parameters:
args
- the argument listkey
- key, or nullallowSecureCreation
- whether creation of databases using the key should be allowed- Returns:
- the server
- Throws:
java.sql.SQLException
-
createTcpServer
public static Server createTcpServer(java.lang.String... args) throws java.sql.SQLException
Create a new TCP server, but does not start it yet. Example:Server server = Server.createTcpServer( "-tcpPort", "9123", "-tcpAllowOthers").start();
Supported options are: -tcpPort, -tcpSSL, -tcpPassword, -tcpAllowOthers, -tcpDaemon, -trace, -ifExists, -ifNotExists, -baseDir, -key. See the main method for details.If no port is specified, the default port is used if possible, and if this port is already used, a random port is used. Use getPort() or getURL() after starting to retrieve the port.
- Parameters:
args
- the argument list- Returns:
- the server
- Throws:
java.sql.SQLException
- on failure
-
createPgServer
public static Server createPgServer(java.lang.String... args) throws java.sql.SQLException
Create a new PG server, but does not start it yet. Example:Server server = Server.createPgServer("-pgAllowOthers").start();
Supported options are: -pgPort, -pgAllowOthers, -pgDaemon, -trace, -ifExists, -ifNotExists, -baseDir, -key. See the main method for details.If no port is specified, the default port is used if possible, and if this port is already used, a random port is used. Use getPort() or getURL() after starting to retrieve the port.
- Parameters:
args
- the argument list- Returns:
- the server
- Throws:
java.sql.SQLException
- on failure
-
start
public Server start() throws java.sql.SQLException
Tries to start the server.- Returns:
- the server if successful
- Throws:
java.sql.SQLException
- if the server could not be started
-
wait
private static void wait(int i)
-
stopAll
private void stopAll()
-
isRunning
public boolean isRunning(boolean traceError)
Checks if the server is running.- Parameters:
traceError
- if errors should be written- Returns:
- if the server is running
-
stop
public void stop()
Stops the server.
-
getURL
public java.lang.String getURL()
Gets the URL of this server.- Returns:
- the url
-
getPort
public int getPort()
Gets the port this server is listening on.- Returns:
- the port
-
run
public void run()
INTERNAL- Specified by:
run
in interfacejava.lang.Runnable
-
setShutdownHandler
public void setShutdownHandler(ShutdownHandler shutdownHandler)
INTERNAL- Parameters:
shutdownHandler
- to set
-
shutdown
public void shutdown()
INTERNAL- Specified by:
shutdown
in interfaceShutdownHandler
-
getService
public Service getService()
Get the service attached to this server.- Returns:
- the service
-
openBrowser
public static void openBrowser(java.lang.String url) throws java.lang.Exception
Open a new browser tab or window with the given URL.- Parameters:
url
- the URL to open- Throws:
java.lang.Exception
- on failure
-
startWebServer
public static void startWebServer(java.sql.Connection conn) throws java.sql.SQLException
Start a web server and a browser that uses the given connection. The current transaction is preserved. This is specially useful to manually inspect the database when debugging. This method return as soon as the user has disconnected.- Parameters:
conn
- the database connection (the database must be open)- Throws:
java.sql.SQLException
- on failure
-
startWebServer
public static void startWebServer(java.sql.Connection conn, boolean ignoreProperties) throws java.sql.SQLException
Start a web server and a browser that uses the given connection. The current transaction is preserved. This is specially useful to manually inspect the database when debugging. This method return as soon as the user has disconnected.- Parameters:
conn
- the database connection (the database must be open)ignoreProperties
- iftrue
properties from.h2.server.properties
will be ignored- Throws:
java.sql.SQLException
- on failure
-
-