skillup

技術ブログ

Database Java

GlassFishでDB接続

投稿日:

一般的にWEB系の言語で、DBを使う場合、WEBサーバーとDBサーバーは単独に動くことが一般的です。

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というのは任意の名称をつけて構いません。

Resource Type = javax.sql.DataSource

Database Driver Vender = MySql (ここはDBによって変わる)

Intorospecチェック無しで登録しましょう。

image001

Nextを押すと様々なプロパティを入力するページに飛びます。

こちらは様々なプロパティがありますが必要最低限のものは下記で問題ありません。

(一度全削除してから設定しても問題ありません。)

URL  jdbc:mysql://localhost:3306/DBの名称
port 3306
ServerName ホスト名
user ユーザー名
password パスワード

(上記情報はglassfish-resource.xmlがあればそちらを参考にすること)

ちなみにパスワードは空白ではダメなようです。設定を行い、問題なければ「save」を押したときに下記のようなメッセージ「New Values successfully saved」が出力されます。

失敗すると赤色のマークになります。その場合、設定情報が間違っていないかもう一度確かめましょう。

image003

aaa

上記画面で「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を通して行うことができます。

image005

persistence.xmlの設定

上記作業ができたら次はJavaEEでプロジェクト画面に移動し、持続性ユニット(persistence.xml)を作成します。

永続性プロパイダはEclipseLinkを使用し、データソースを先ほど作成したJDBCリソースの名称を選択します。

(この時点でプルダウンにはいってなければ認識されていません。)

また表生成戦略とは作成を選びますと、テーブルがない場合、自動でエンティティを見て生成してくれます。

ドロップして作成の場合、新規データが作られるたびにテーブルを初期化します。

image007

以上でJavaEEとDB接続は終了です。

Linuxで動かすときはこれをコンソールからやることになりますね。

 

-Database, Java
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

JPAを使用する  JavaSE編

現在の開発ではデータベースへの接続ではJPAを使っています。このJPAがなかなか曲者でいろいろと詰まることがありましたので解説させていただきます。 Contents1 JPAとは?1.1 メリット1. …

no image

SQLクエリ比較

クエリの比較 SQLにおいては全く同じ結果を返すのであってもその検索結果が異なるということはよくあります。 例えば下記のようなテーブルがあった場合 co_cd | district —&# …

no image

Optionalについて その1

Streamに続いて、Java8で新搭載された機能がOptional です。 Javaではnullの処理をいちいちしなくてはいけないのがいろいろと面倒ですが、Optionalの機能をうまく使うことで可 …

no image

CASE+HAVING句

今回はCASEとHAVINGを組み合わせて、そこそこの難問を解いていきます。 まず下記のようなテーブル(testresults)があるとします。 student | class | sex | sco …

no image

jenkins構築

いままでjenkinsについての記事を書いていなかったので記録しておこうと思います。 Contents1 jenkins構築2 設定ファイル変更(ポート&URL変更)3 セキュリティ有効化 jenki …