JavaEEではアプリケーションサーバーとしてGlassFishを使いますが、先日、GlassFishを通さないとJavaEEでDBが動かせないということを知りました。そのためJavaEEではデータベースの情報をGlassFishに登録することが必要です。(Netbeansからもできますが、あえて動きを理解するためにGlassFishを直接操作したいと思います。)
JavaEEとDB接続
ローカルでGlassFishをインストールした場合、以下のURLでGlassFishの管理画面にアクセスできます。
http://localhost:4848/
ディフォルトではポートが4848なはずです。
こちらの画面でDBの設定を行います。
JDBC Connection Poolの設定
左記のメニューの「JDBC ConnectionPool」という場所がDBの接続情報を登録する場所になります。
PoolNameというのは任意の名称をつけて構いません。
1 2 3 |
Resource Type = javax.sql.DataSource Database Driver Vender = MySql (ここはDBによって変わる) |
Intorospecチェック無しで登録しましょう。
Nextを押すと様々なプロパティを入力するページに飛びます。
こちらは様々なプロパティがありますが必要最低限のものは下記で問題ありません。
(一度全削除してから設定しても問題ありません。)
1 2 3 4 5 |
URL jdbc:mysql://localhost:3306/DBの名称 port 3306 ServerName ホスト名 user ユーザー名 password パスワード |
(上記情報はglassfish-resource.xmlがあればそちらを参考にすること)
ちなみにパスワードは空白ではダメなようです。設定を行い、問題なければ「save」を押したときに下記のようなメッセージ「New Values successfully saved」が出力されます。
失敗すると赤色のマークになります。その場合、設定情報が間違っていないかもう一度確かめましょう。
上記画面で「ping」を押して「ping succeeded」がでればOKです。
Linux環境で行う場合は、MySQLのドライバを別途通す必要が出てきます。
詳しくはCentOS上にglassfish構築+arquillianテストの「glassfishからDBへの接続」に記述してあります。
JDBC Resourceの設定
接続プールを設定したあとはこれを元に「JDBC Resource」の設定を行います。
これはJavaとGlassFishのDB情報をつなぐ窓口になります。
JNDIという名称は任意の名称をつけて問題ありませんが、Pool Nameということろは先ほど設定したJDBC Connection Poolの名称を入力します。
この情報を入力すれば「OK」を押しましょう。これでJavaEEとDBの接続をGlassFishを通して行うことができます。
persistence.xmlの設定
上記作業ができたら次はJavaEEでプロジェクト画面に移動し、持続性ユニット(persistence.xml)を作成します。
永続性プロパイダはEclipseLinkを使用し、データソースを先ほど作成したJDBCリソースの名称を選択します。
(この時点でプルダウンにはいってなければ認識されていません。)
また表生成戦略とは作成を選びますと、テーブルがない場合、自動でエンティティを見て生成してくれます。
ドロップして作成の場合、新規データが作られるたびにテーブルを初期化します。
以上でJavaEEとDB接続は終了です。
Linuxで動かすときはこれをコンソールからやることになりますね。