Java EE 事始め!

主にJava EEについて、つらつらとマイペースに書いていきます。「Java EEを勉強するときに、一番最初に読んでもらえるブログ」を目指して頑張ります!

Payara(GlassFish)でMariaDBのJDBC接続プールが作成できない

表題の通りです。

環境

試していませんが、おそらくWindowsGlassFishでも同じ現象が起こると思います。

現象

  • MariaDBJDBCドライバのJARを「<PAYARA_HOME>/glassfish/lib」や「<PAYARA_HOME>/glassfish/domains/domain1/lib」に置く
  • Payaraを起動してlocalhost:4848にアクセスし、管理コンソールからURL/USER/PASSWORDを設定する

という一般的な手順で作成しても、MariaDBへのpingが通りません。

ping時のPayara管理コンソール(ブラウザ上)でのエラーメッセージは、こんなのが出ます。

Access denied for user ‘’@’localhost’ (using password: NO) 

どうやら、ユーザー名やパスワード設定が間違っている時に出てくるMariaDBのエラーメッセージのようなのですが、全く同じURL/USER/PASSWORDでメインメソッドから普通にJDBC接続したら出来ました。 (URL/USER/PASSWORDはPayara管理コンソールからコピペしたので間違いないはずです)

Payaraのプロパティ名も間違えていません。

しかも、ごくたまにpingが通ります。しかし、またすぐにpingが通らなくなります。

対策

今回は、MariaDBをPayaraで使うこと自体が目的ではないので、MySQL 5.6に変更しました。そうすると無事にJDBC接続プールが作成できました。

原因は分かりませんが、Payara管理コンソールで選択するときのDBの種類にはMariaDBは入っていないし、Payara(というか恐らくGlassFish)はMariaDBに対応していないのかもしれません。 (完全に僕の憶測です)

注意

この問題は、あくまでPayara+MariaDBの組み合わせによるものです。

上述の通り、通常のJDBC接続であればMariaDBは問題なく動作しました。