#chiroito ’s blog

Java を中心とした趣味の技術について

JBoss EAPでPostgreSQLのデータソースを作成

JBoss EAP 7.4 に PostgreSQL のデータソースを作る流れのメモです。 今回は、Webコンソールではなく、CLI を使用します。 必要最低限の設定しかしないので、本番では参考資料をご確認のうえ、適切に設定しましょう。

参考資料はこちら 第12章 データソース管理 Red Hat JBoss Enterprise Application Platform 7.4-beta | Red Hat Customer Portal

データソースの作成には、JDBCドライバが必要です。 まずは必要なドライバをダウンロードしましょう。 この例は、JDBCドライバとしてpostgresql-42.7.3.jarを使用しています。

JBoss EAP の CLI ツールを実行します。

${JBOSS_HOME}\bin\jboss-cli.bat

まずは、APサーバに接続します。 次に、JDBCドライバのJARファイルを登録します。 その後、JDBCドライバの設定をします。 最後にデータソースを作成します。

connect

module add --name=org.postgres --resources=postgresql-42.7.3.jar --dependencies=javax.api,javax.transaction.api

/subsystem=datasources/jdbc-driver=postgres:add(driver-name=postgres,driver-module-name=org.postgres,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource, driver-class-name=org.postgresql.Driver)

data-source add --name=PostgresDS --jndi-name=java:/PostgresDS --driver-name=postgres  --connection-url=jdbc:postgresql://localhost:5432/user

データソースが作成できたら、接続確認をしましょう。これも CLI でできます。

/subsystem=datasources/data-source=PostgresDS:test-connection-in-pool

以下のように success と返ってくれば接続できています。

{
    "outcome" => "success",
    "result" => [true]
}

Mavenを使用している大規模OSSのビルド時間を短縮するメモ

私は仕事上、OpenJDK, Quarkus, Wildflyなど大規模なJavaのOSSをビルドして検証・バグ修正・不足機能を開発することがよくあります。 これらは大規模すぎるため、全体をビルドすると何時間もかかります。 このビルド時間は、使用しないモジュールのビルドや各モジュールでのテストも含んでいます。

時短の方法はいろいろあります。 その方法を自分のメモにしか記録していなかったため、バックアップも兼ねてここに残しておきます。 それぞれの要素は組み合わせもできます。

「他にもあるよ」という方がいらっしゃれば今後のために教えて頂けると助かります。

ここにあるものを試しても遅い場合は、速くてコアの多いCPU、高速なインターネット、IOPSの高いSSDを導入してください・・・

Lifecycleはinstallにしていますが他でも大丈夫です。

使いたいモジュールが依存するものだけを対象に

まずは、自分が使いたいモジュールと、そのモジュールが依存しているモジュールだけをビルドしてローカルのリポジトリへインストールします。

mvn install -pl <使いたいモジュールまでのパス> -am

自分が使いたいモジュールは-plで指定します。 -pl--projectsの短縮形です。

自分が使いたいモジュールが依存しているモジュールを含めてビルドするには-amを使用します。 -am--also-makeの短縮形です。

ビルドが失敗した後に失敗したところからやり直す

ビルドを実行すると、だいたいどこかで失敗します。 失敗しても、これまでコンパイルしたクラスやダウンロードしたものがあります。 失敗したときに、また最初からビルドすればそれらを活用できるため、1度目よりは早く失敗した箇所へ戻れるでしょう。 しかしながら、それでも時間はかかるので、失敗したところから再開します。

mvn install -rf :ビルドを再開したいモジュール

再開するときに使うのが-rfです。 -rf--resume-fromの短縮形です。

テストを省略

テストは重要です。 しかしながら、検証するときはテストをしたい訳ではありません。 特に、最初に検証するときにはテストをスキップしたいでしょう。

mvn install -DskipTests

テストをスキップする時に使うのは-DskipTestsです。 ただし、testライフサイクルと一緒に使うとテストが実行されないので注意してください。

ビルドに不要なものを全部省略

私がよく触っているQuarkusですと、できるだけ高速にビルドするオプションが用意されています。

mvn install -Dquickly

なるべく高速にビルドしたいときに使うのは-Dquicklyです。 これはテストの実行やコンパイルなどいろんなものを省いてくれます。

これも、testライフサイクルと一緒に使うとテストが実行されないので注意してください。

ルートディレクトリからモジュールをインストール

一度全体のビルドが済むと、いくつかの特定のモジュールだけを修正することになります。 毎回ディレクトリを移動していると自分がどこにいるのか把握するのは難しいです。 ビルドしたと思ったら別のモジュールだったということが良くあり、時間の無駄になります。 カレントディレクトリはgit cloneした直下にしたまま、それぞれのモジュールをビルドしましょう。

mvn -f <モジュールまでのパス> clean install

ここではcleanも付けています。 モジュールを修正すると、.javaファイルを削除することがあります。 しかしながら、コンパイル済みの.classファイルは残っています。 これによって消したはずのクラスが読み込まれます。 それを避けるため、cleanを付けましょう。

参考

Maven – Guide to Working with Multiple Modules in Maven 4

Maven Surefire Plugin – Skipping Tests