[h2db]サーバモードについて

  h2database

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
To map an ODBC database name to a different JDBC database name, use the option -key when starting the server.

http://www.h2database.com/html/advanced.html#odbc_driver

サーバとクライアントでH2のバージョン違いでエラーが発生することがある。

"unexpected status 16777216"

LEAVE A COMMENT