Package org.h2.tools

Class 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.
    • Constructor Summary

      Constructors 
      Constructor Description
      Server()  
      Server​(Service service, java.lang.String... args)
      Create a new server for the given service.
    • 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()
      INTERNAL
      void runTool​(java.lang.String... args)
      Run the tool with the given output stream and arguments.
      void setShutdownHandler​(ShutdownHandler shutdownHandler)
      INTERNAL
      void shutdown()
      INTERNAL
      static 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 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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 service
        args - 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)
        The options -xAllowOthers are potentially risky. For details, see Advanced Topics / Protection against Remote Access.
        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.
        Specified by:
        runTool in class Tool
        Parameters:
        args - the argument list
        Throws:
        java.sql.SQLException - on failure
      • 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:9094
        password - 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 list
        key - key, or null
        allowSecureCreation - 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 interface java.lang.Runnable
      • setShutdownHandler

        public void setShutdownHandler​(ShutdownHandler shutdownHandler)
        INTERNAL
        Parameters:
        shutdownHandler - to set
      • 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 - if true properties from .h2.server.properties will be ignored
        Throws:
        java.sql.SQLException - on failure