2009-01-31更新 2006-09-04作成

 ■H2 DB インストール・設定

 ここでは H2 Database Engine を
・Windows環境にインストールし
・Javaから(トランザクション機能を含めて)使用し
・日本語データを扱える
ところまでの最低限の設定について説明します。

 ここの内容は「私はこうしたら出来た」という意味合いが強いので、もしかするとより良い方法があるかもしれません。

 ■H2 DB最新版の場所

 H2 DBの最新版は、http://www.h2database.com/html/frame.htmlにあります。
 ページの左上に「Download」と書かれた枠があり、ここにバージョンと最新リリースの日付が書かれています。
 枠の下部に「All Downloads」というリンクがあるので、これをクリックしましょう。そうすると最新のリリース(build)と、最新の安定版と分かれてリンクがあります。それぞれ 「Windows Installer」と「Platform-Independent Zip」に分かれていますが、ここでは CurrentWindows Installer を選ぶことにします。
 リンクをクリックすると h2-setup-yyyy-mm-dd.exeというファイル(yyyy-mm-ddの部分がリリース日付です)がダウンロードされるので、ダウンロード完了後にこれを実行してください。

 それからドキュメントです。あいにく日本語ドキュメントはありません。
 まずマニュアルですが、左側の Reference 欄にある「Documentation as PDF」からリンクしているものがそれです。
 それとその他の、「SQL Grammar」、「Functions」、「Data Types」、「Javadoc JDBC API」がありますが、PDFのマニュアルを含めて特に気にする必要はありません。H2 DBをインストールすると、H2インストールディレクトリ\docsの下に、これらファイルは全て含まれているためです。


 ■インストール手順

 ◇H2 DBのインストール

 ダウンロードしてきたファイルは実行ファイルになっています(例:h2-setup-2007-04-29.exe)。これを実行するとインストールが始まります。


 ここではH2 DBのインストール先を聞いてきます。C:\Program Files\H2 がデフォルトのインストール先です。ここではインストール先を、 C:\H2 に変えた方法で説明します。


 次が「スタートメニュー フォルダ」の確認です。通常のWindowsアプリケーションインストール時と同じ画面ですね。ここはデフォルトの H2 のままにしておきます。


 インストールはこの画面で「インストール」ボタンを押すと実行されます。


 この画面が出れば後は「完了」ボタンを押せばインストール完了です。例えばMySQLのときにように、インストール時の設定などもありません。インストールは実に簡単です。インストールで行っているのは、
・圧縮ファイルの展開
・スタートメニューへのH2項目の追加
だけです。

 以降のH2設定作業は、スタートメニューから「プログラム」−「H2」−「H2 Console」を実行し、この中で行っていきます。

 ■H2 DBの設定

 H2 DBの設定といっても、設定らしい設定はありません。
 例えば他のDBを使う場合、文字列を扱う際のデフォルト文字コードを設定したりできます。H2 DBの場合はJavaで書かれていることもあって、文字コードはunicodeUTF-8が使用されます。他の文字コードに変更することは出来ません。

 それからデータベースファイルの作成場所ですが、特に設定ファイル等で指定することもありません。これはデータベースへの接続時に指定することになります。これは「H2 DBの操作」で説明します。


 インストールに関連した設定方法が一つあります。
 「H2 DBの特徴」で触れましたが、H2 DBの動作モードにはサーバーモードと組込モードがあります。サーバーモードはさらに、
・通常のアプリケーションとしてH2 DBプロセスを動かす
・NTサービスとして動かす
二通りの方法があります。
 このNTサービスとして動かすためのインストール(設定)について説明します。

 ◇NTサービスとしてインストール

 NTサービスとしてインストールするには、H2 DBインストールディレクトリ(このページの説明ではC:\H2としているので、以下これで説明します)\serviceにあるバッチファイルを使います。
 C:\H2\service\1_install_service.bat がそのバッチファイルです。これをダブルクリック等で動かすと、NTサービスとしてインストールされます。

 標準では
サービス名:H2DatabaseService
起動方法 :OS起動時に自動起動
になります。

 サービスを止めたり動かしたりする方法ですが、同じ H2\service ディレクトリに
C:\H2\service\2_start_service.bat
C:\H2\service\4_stop_service.bat
というバッチファイルがあります。それぞれを動かすことにより、サービスを動かしたり止めることができます。

 次にこの方法ではなく、コマンドプロンプトの画面でコマンドでサービスを起動したり停止させる方法を説明します。
 コマンドプロンプトの画面を開いて(「スタート」ボタンから「ファイル名を指定して実行」と進み、cmd を実行する)、
 net start H2DatabaseService
とすると起動され、
 net stop H2DatabaseService
で停止できます。

 しかしこれではサービス名があまりに長いので面倒、あるいは自動起動でなく使うときだけ起動したい、という人のために
・サービス名を変更する
・サービス起動方法を変える
方法について説明します。

 ・confファイルの修正

 このサービス設定の変更は同じディレクトリにある、
C:\H2\service\wrapper.conf
ファイルを編集することによって行います。

 サービス名変更の前に、H2 DBがバージョン1.1系列になってから起きている問題があるので、それの解消方法を説明します。

 2009/1/24版Ver1.1.107のwrapper.confファイルをエディタ等で開くと、最初の部分は下記のようになっています。


#********************************************************************
# Wrapper Properties
#********************************************************************
# Java Application
wrapper.java.command=java

# Java Main class.  This class must implement the WrapperListener interface
#  or guarantee that the WrapperManager class is initialized.  Helper
#  classes are provided to do this for you.  See the Integration section
#  of the documentation for details.
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp

# Java Classpath (include wrapper.jar)  Add class path elements as
#  needed starting from 1
wrapper.java.classpath.1=wrapper.jar
wrapper.java.classpath.2=../bin/h2.jar
wrapper.java.classpath.3=%H2DRIVERS%
wrapper.java.classpath.4=%CLASSPATH%

 この部分のwrapper.java.classpathで、サービスとして起動するH2 DBに関する情報を定義しています。

 これの2行目、wrapper.java.classpath.2で、起動するH2 DBの実行ファイル(jarファイル)を指定しています。これに問題があります。

 Ver1.0系列のときはH2 DBの実行ファイルは常にh2.jarという名前でした。Ver1.1からはjarファイルに、バージョン番号を含む名前体系に変更されています。そのため実行ファイルは例えばVer1.1.107の場合、h2-1.1.107.jarというファイル名になっています。

 そのためwrapper.confの内容がこのままでは、サービスとして起動するときにエラーになってしまいます。これの対処方法は二通りあります。

wrapper.confを修正する

 問題となるwrapper.java.classpath.2の指定を、../bin/h2-1.1.107.jarと実際にインストールしたH2 DBの実行ファイル名に合わせて変更する方法です。

実行ファイル名を変える

 正確にはwrapper.confの該当部分は変更せずに、h2.jarというH2 DBの実行ファイルを作成する方法です。

 H2 DBインストールディレクトリ\binには、例えばh2-1.1.107.jarのようなバージョン番号をファイル名に含んだ実行ファイルがあります。

 まず同じディレクトリ内にこの実行ファイルへのシンボリックリンク(ショートカット)を作成します。そしてそのシンボリックリンク(ショートカット)のファイル名を、h2.jarに変更しておく方法です。

 これと同じような方法ですが新バージョンのH2 DBをインストールする度に、jarファイルをコピーしてファイル名を変更し、h2.jarという名前のjarファイルを作成してしまう方法もあります。


 続いてサービス名変更の説明に移ります。
 同じconfファイル(wrapper.conf)の最後の部分は下記のようになっています。
 太字の部分がサービス名の設定と、サービス起動方法に自動起動を設定している部分です。


#********************************************************************
# Wrapper Windows NT/2000/XP Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
#  using this configuration file has been installed as a service.
#  Please uninstall the service before modifying this section.  The
#  service can then be reinstalled.

# Name of the service
wrapper.ntservice.name=H2DatabaseService

# Display name of the service
wrapper.ntservice.displayname=H2 Database Engine Service

# Description of the service
wrapper.ntservice.description=H2 Database Engine Service (TCP Server and H2 Console Web-Application)

# Service dependencies.  Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=

# Mode in which the service is installed.  AUTO_START or DEMAND_START
wrapper.ntservice.starttype=AUTO_START

# Allow the service to interact with the desktop.
wrapper.ntservice.interactive=false

 まず wrapper.ntservice.name で指定しているのがサービス名なので、例としてこれを H2DB に変えてしまいます。

 それから自動起動をやめて手動起動に変えます。これは wrapper.ntservice.starttype の指定を DEMAND_START に変えることによって行います。

 変更後のwrapper.confファイル該当部分のサンプルは下記の通りです。


#********************************************************************
# Wrapper Windows NT/2000/XP Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
#  using this configuration file has been installed as a service.
#  Please uninstall the service before modifying this section.  The
#  service can then be reinstalled.

# Name of the service
#wrapper.ntservice.name=H2DatabaseService
wrapper.ntservice.name=H2DB

# Display name of the service
wrapper.ntservice.displayname=H2 Database Engine Service

# Description of the service
wrapper.ntservice.description=H2 Database Engine Service (TCP Server and H2 Console Web-Application)

# Service dependencies.  Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=

# Mode in which the service is installed.  AUTO_START or DEMAND_START
#wrapper.ntservice.starttype=AUTO_START
wrapper.ntservice.starttype=DEMAND_START

# Allow the service to interact with the desktop.
wrapper.ntservice.interactive=false

 # で始まる行はコメント行になるので、オリジナルの設定はコメント行として残しました。

 なおここでは wrapper.ntservice.name のみ変更し、 wrapper.ntservice.displayname は変えていません。これは「サービス名」は変更したが「サービス表示名」は変更していない、ということです。
 どういうことかというと、例えばWindowsの「設定」−「コントロールパネル」−「管理ツール」−「サービス」でサービス一覧を表示したときは、元の H2DatabaseService で表示されます。
 しかし「サービス名」は変更しているので、コマンドプロンプトなどでサービスを操作する際には変更後の H2DB と指定します。

 ・BATファイルの修正

 サービスの起動停止を、コマンドプロンプトだけから行うのであれば以上で完了です。
 ただしBATファイルによる起動停止も出来るように、サービス名の整合性を保っておくことにしましょう。
 起動用のBATファイルは
C:\H2\service\2_start_service.bat
で、停止用のBATファイルは
C:\H2\service\4_stop_service.bat
です。

 次にそれぞれのBATファイルを、このページの説明通りに修正した内容を載せておきます。
まず開始用のC:\H2\service\2_start_service.batから。


rem sc start "H2DatabaseService"
sc start "H2DB"
if not errorlevel 1 goto :eof
pause


次に停止用のC:\H2\service\4_stop_service.batです。


rem sc stop "H2DatabaseService"
sc stop "H2DB"


 どちらもオリジナルの部分は rem によりコメントとして残してあります。

 「H2 DBの起動と停止」に続く



このページの先頭  技術メモ先頭  サーバーJava入門先頭  H2 DB Engine編先頭
Copyright © 2006-2009 YOK. All Rights Reserved.