H2DBは組込モードだけでなくサーバモードでも起動することができる。以下のような感じで、org.h2.tools.Server を実行すればサーバが起動する。
> java -cp %PLAY_HOME%\framework\lib\h2-1.4.185.jar org.h2.tools.Server
起動するとTCPポートやWebコンソールのポート情報が表示されるので、その情報を使ってアクセスする。
サーバ機能には3種類あり、-tcp, -pg, -web
オプションを指定しないと全て起動する。一つでも指定すると個別起動となる。
ポート | オプション | ||
---|---|---|---|
標準 | TCPサーバ | 9092 | -tcp 機能使用 -tcpSSL SSL使用 -tcpPort ### ポート指定 -tcpPassword *** 管理者パスワード指定 -tcpAllowOthers 他PCからの接続許可 -tcpDaemon デーモンスレッド起動 -key *** ODBC用 -ifExists ifExists機能ON -baseDir *** ベースディレクトリ指定 |
Postgres互換 | PGサーバ | 5435 | -pg 機能使用 -pgPort ### ポート指定 -pgAllowOthers 他PCからの接続許可 -pgDaemon デーモンスレッド起動 -key *** ODBC用 -ifExists ifExists機能ON -baseDir *** ベースディレクトリ指定 |
Web管理画面 | Webブラウザから使える管理画面 | 8082 | -web 機能使用 -browser ブラウザ起動 -webSSL SSL使用 -webAllowOthers 他PCからの接続許可 -webDaemon デーモンスレッド起動 |
その他オプション -trace
トレースON
JavaプログラムからTCPサーバ起動する
String serverOptions[] = new String[] { "-tcpAllowOthers" };
org.h2.tools.Server h2Server = org.h2.tools.Server.createTcpServer(String...);
h2Server.start();
Logger.info("Connect to 'jdbc:h2:%s'.)", h2Server.getURL());
サーバ接続文字列
jdbc:h2:tcp://[サーバーのIP]/[データベースファイル]
playframework1の場合
db.default.url=jdbc:h2:tcp://localhost/${application.path}/db/h2/play;MODE=MYSQL;MVCC=TRUE;
db.default.driver=org.h2.Driver
db.default.user=sa
db.default.pass=
#サーバ側のベースディレクトリに依存する接続文字列の書き方
#db.default.url=jdbc:h2:tcp://localhost/db/h2/play;MODE=MYSQL;MVCC=TRUE;
#h2server.baseDir=${application.path}
#サーバ側のベースディレクトリに依存しない書き方
#db.default.url=jdbc:h2:tcp://localhost/C:/temp/db/h2/play;MODE=MYSQL;MVCC=TRUE;
#サーバ側のベースディレクトリ設定と接続文字列のディレクトリ設定が重なった場合
# サーバ側で指定したディレクトリ配下を指定したなら問題なく使える。
# サーバ側で指定したディレクトリ外を指定した時は例外が出て止まってしまう。
ODBC用機能
-key
オプションはODBCのDB名とDBURLとのマッピングを行う。らしい。
ODBC Driver
http://www.h2database.com/html/advanced.html#odbc_driver
To map an ODBC database name to a different JDBC database name, use the option -key when starting the server.
他
サーバとクライアントでH2のバージョン違いでエラーが発生することがある。
"unexpected status 16777216"