JSF2.0+JPA2.0+eclipse 構築編:JPAでの例外の解消(その4)
引き続き例外の調査です。
前回Glassfishのサーバを立ててデプロイしてみて、persistence.xmlのtransaction-typeをRESOURCE_LOCALにしているために起動に失敗している、ということが分かりました。
今回はここをJTAに変えて動作させてみます。
データソースの確認
確かGlassfishサーバはサンプルのデータソースがデフォルトで登録されていた気がします。
管理コンソールで確認しましょう。
なおGlassfishサーバを起動していない場合は前回のエントリを見て起動しておいて下さい。
管理コンソールには以下のURLでアクセス出来ます。
http://localhost:4848/
トップ画面ではけっこう待たないといけません。これはなんとかならんものか。
さて管理コンソールの左側のツリーを展開してデータソースを確認します。
ふむ。jdbc/__defaultというデータソースがありますね。これを使いましょう。
Derbyの起動
jdbc/__defaultはローカルホストの1527ポートのDerbyサーバに接続します。DerbyはJavaで作られたRDB製品で、Glassfishに同梱されています。
というわけでDerbyを起動しましょう。
ターミナルで以下のフォルダに移動します。
<GlassfishのZIPを解凍して現れるフォルダ>/javadb/bin
ここで以下のコマンドを実行。
./startNetworkServer
すると
Error: DERBY_HOME is not set. Please set the DERBY_HOME environment variable to the location of your Derby installation.
あら。環境変数を設定しろって怒られました。
設定します。
export DERBY_HOME=<GlassfishのZIPを解凍して現れるフォルダ>/javadb
再度起動コマンドを実行!
./startNetworkServer
すると
2011-02-11 18:59:37.084 GMT : セキュリティーマネージャーが Basic サーバーセキュリティーポリシーを使用してインストールされました。 2011-02-11 18:59:37.477 GMT : Apache Derby Network Server - 10.5.3.0 - (802917) ???????????????????????? 1527 ???????∂?????????????????∫??????????‰∫?????????????
あら、文字化け。ターミナルの環境設定がまずいらしい・・・一部が化けるってどーゆーこと?たぶんメッセージの出所がちがうんでしょうねぇ。
このままじゃアレなので、Glassfishの管理コンソールからpingを打って、Derbyの起動を確認しましょう。
pingが通りました。準備は完了かな。
persistence.xmlの修正
eclipseのプロジェクトに戻り、persistence.xmlを書き直します。
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="pu" transaction-type="JTA"> <jta-data-source>jdbc/__default</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> <property name="eclipselink.ddl-generation.output-mode" value="database"/> <property name="eclipselink.logging.level.sql" value="FINE"/> </properties> </persistence-unit> </persistence>
変えたのは以下。
WARの作成、デプロイ
ここの手順は前回のエントリを参照して下さい。
結果の確認
おっ!sandbox.war_deployedというファイルが出来てます!
ではWebアプリにアクセスしてみましょう。
http://localhost:8080/sandbox/employee-list.xhtml
・・・おおっ!!意図していた画面が表示されました!
ただ作りが悪いらしくINSERTボタンはエラーが出て動きません。残念ですが、今は置いておきます。