H2 コンソールは tomcat 経由で提供される[プログラミング]
(2026-06-24 20:29:45) by shinoda
< ページ移動: 1 2 >
現在、Spring Batch の勉強をしている環境が MySQL や PostgreSQL
を勝手にインストールできないため、勉強用のプログラムの試作では H2 というデータベースを使っている。
インストールをしなくても、プロジェクトの依存関係に H2
のライブラリを登録すれば開発したプログラムですぐ使えるようになるので便利。ただ、こんな DB
があることをつい最近まで全然知らなかった(^^;;;。
AI様によると「Javaで記述された非常に軽量かつ高速なオープンソースRDBMS。サイズは約2.5MBとコンパクト。インストール不要で利用可能」というもので、データをメモリにロードしプログラムの実行が終わったらすぐに破棄するという使い方ができるので、単体テストで使うと便利・・・ということのようだ。
ちなみに俺はメモリ上への展開ではなく、ファイルに出力する形をとっている。
ただ、DBの読み書きがうまくいっているかはログとかで確認できるけど、プログラム実行後にテーブル内が確認したいという時はどうすんの?インストールしないから、PostgreSQL
の psql みたいな操作ツールはないんよね?
心配ご無用。Web 画面で「H2 コンソール」というのが提供されている。
なるほどって思って、下記のような設定でコンソール利用可能にした。(H2 関係の設定のみ抜粋)
(resource/application.properties)
# H2 を PostgreSQL 互換モードで使用(テーブル名等は小文字で)
spring.datasource.url=jdbc:h2:./.data/h2/db;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
# H2 Console を有効化
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
# JPA/Hibernate設定
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
バッチが終了するとコンソールも閉じてしまうという話をチラっとみたので、バッチを途中でブレークして
にアクセスしてみたのだが「このサイトにアクセスできません localhost で接続が拒否されました。」になってしまう。8080
ポートで受信状態になってないときのエラーやん。
なんと、コンソール用の Webサービスは tomcat を使うようだ。H2 そのものが 8080
ポートへのアクセス機能を提供しているのかと思ってたが、よく考えたら、それだと Web アプリの開発のときに面倒だよな。8080
のポート番号も変えなきゃいけないし・・・
というわけで tomcat の依存関係の登録が必要。
pom.xml に以下の記述を追加し、
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Alt + F5 キー押下でプロジェクトの更新を行おう。
(当ブログの「Spring Batch の依存関係をあとから追加する(Maven 版)」も参照)
また、テスト用のバッチはあっという間に終わってしまうので、途中でブレークしてその間にコンソールを開くなどしないといけない。
そこで、バッチ終了後にコンソールが使えるよう、以下の記述も application.properties に追加する。
# バッチ完了後もサーバーを起動したまま(Webコンソール有効状態維持)
spring.batch.job.enabled=true
# Webアプリケーションとして常駐
spring.main.web-application-type=servlet
これで、バッチ終了後も Eclipse で見ると赤いストップボタンが有効になってて、まだ「実行状態」なのがわかる。