>
11. アプリケーションをテストする
この手順では、DAO クラス、JSP、サーブレットなどの既製の Web コンポーネントをインポートし、サーバ コンフィグレーションを作成し、Hibernate Web アプリケーションをデプロイおよび実行します。
11.1. Web コンポーネント (JSP、DAO など) をインポートおよび編集する
- 以下の Java パッケージを作成します。
- Workshop-Hibernate-Tutorial/web/Resources/dao-classes フォルダにあるすべてのクラスを、com.bea.dao パッケージにコピーします。このパッケージに属するクラスは、Hibernate によるオブジェクト永続性の管理に使用されます。
- 同じように、Workshop-Hibernate-Tutorial/web/Resources/util フォルダにある MessageFactory クラスを com.bea.util パッケージにコピーします。
- Workshop-Hibernate-Tutorial/web/Resources/JSPs フォルダにあるすべての JSP を、Workshop-Hibernate-Tutorial/web/pages フォルダにコピーします。
- Workshop-Hibernate-Tutorial/web/Resources/stylesheet.css ファイルを、web フォルダにコピーします。
- Workshop-Hibernate-Tutorial/web/Resources/application.properties ファイルをコピーし、web/WEB-INF/src/java/resources フォルダにある application.properties ファイルに上書きします。
- com.bea.beans パッケージに、新しいクラス CustomerManagedBean を作成します。CustomerManagedBean クラスに、customer プロパティ (com.bea.beans.Customer 型) および対応するゲッター/セッター メソッドを追加します。
- com.bea.beans.CustomerManagedBean.java には、さらにいくつかのアクション メソッドを追加します。それらは、データ ストアに顧客を追加する操作と、特定の顧客による注文の検索を実行するためのメソッドです。
- CustomerManagedBean クラスに、Workshop-Hibernate-Tutorial/web/Resources/BackingBean_Customer_Methods.txt ファイルのメソッドをコピーします。
public String addCustomer( ) { FacesContext context = FacesContext.getCurrentInstance( ); ExternalContext extContext = context.getExternalContext( ); DAOFactory daoFactory = new DAOFactory( ); CustomerDAO customerDAO = daoFactory.getCustomerDAO( ); try { customerDAO.addCustomer(customer); Object[ ] objArr = new Object[ ] { customer.getName( ) , customer.getCustomerid( ) }; FacesMessage message = MessageFactory.getMessage(context, "Successful_CustomerRegistration", objArr); String msg = message.getDetail( ); extContext.getRequestMap( ).put("Successful_CustomerRegistration", msg); return "success"; } catch(DAOException ex) { Object[ ] objArr = new Object[ ] { ex.toString() }; FacesMessage message = MessageFactory.getMessage(context, "Error_AddingCustomer", objArr); context.addMessage(null, message); return null; } } public String viewOrders( ) { FacesContext context = FacesContext.getCurrentInstance( ); ExternalContext extContext = context.getExternalContext( ); DAOFactory daoFactory = new DAOFactory( ); CustomerDAO customerDAO = daoFactory.getCustomerDAO( ); OrderDAO orderDAO = daoFactory.getOrderDAO( ); try { Customer customerBean = customerDAO.getCustomer(customer.getCustomerid( ).intValue( )); OrderData[ ] orders = orderDAO.getOrderByCustomer(customer.getCustomerid( ).intValue( )); if(orders.length > 0) { extContext.getRequestMap( ).put("customerName", customerBean.getName()); extContext.getRequestMap( ).put("orders", orders); return "ordersList"; } else { Object[ ] objArr = new Object[ ] { customerBean.getName() }; FacesMessage message = MessageFactory.getMessage(context, "Error_NoOrders", objArr); context.addMessage(null, message); return null; } } catch(DAOException ex) { Object[ ] objArr = new Object[ ] { ex.toString() }; FacesMessage message = MessageFactory.getMessage(context, "Error_GettingOrders", objArr); context.addMessage(null, message); return null; } } |
- 電球アイコン
を使用して、以下のパッケージをインポートします。
- FacesMessage (package javax.faces.application)
- ExternalContext(package javax.faces.context)
- FacesContext(package javax.faces.context)
- CustomerDAO(package com.bea.dao)
- DAOException(package com.bea.dao)
- DAOFactory(package com.bea.dao)
- OrderDAO(package com.bea.dao)
- MessageFactory(package com.bea.util)
- CustomerManagedBean.java ファイルを保存します。
11.2. Faces デプロイメント記述子を編集する
- 管理対象 Bean とナビゲーション ルールは、faces-config.xml ファイルで定義する必要があります。
- web/Resources フォルダに、この Web アプリケーション用の管理対象 Bean とナビゲーション ルールを定義した faces-config.xml ファイルがあります。web/Resources/faces-config.xml を web/WEB-INF/config フォルダにコピーしてください。
- web/WEB-INF/config/faces-config.xml ファイルを開き、Faces のコンフィグレーションを確認します。リクエスト スコープの管理対象 Bean として、Customer および CustomerManagedBean が定義されています。また、アプリケーション スコープの管理対象 Bean として DAOFactory が定義されています。
![](images/img116.JPG)
- ナビゲーション ルールとしては、addCustomer.jsp および viewAllCustomers.jsp 用のルールがそれぞれ定義されています。addCustomer.jsp のナビゲーション ケースには、送り先ページとして /pages/viewAllCustomers.jsp が、結果として success が指定されています。
![](images/img117.JPG)
- 同じように、viewAllCustomers.jsp のナビゲーション ケースには、送り先ページとして /pages/viewOrders.jsp が、結果として orderList が指定されています。
![](images/img118.JPG)
- faces-config.xml ファイルを保存します。
11.3. サーバ コンフィグレーションを作成する
Workshop では、現在広く使用されているほとんどの Web コンテナでアプリケーションを実行およびデバッグできます。ただし、このサンプル アプリケーションをデプロイする前に、サーバをインストールしておく必要があります。
- [サーバ] タブをクリックします。[サーバ] ビュー タブが表示されていない場合は、[ウィンドウ|パースペクティブを開く|Workshop] を選択します (または、[ウィンドウ|ビューの表示|その他] を選択してから [サーバ] を展開し、[サーバ] を選択して [OK] をクリックします)。
- [サーバ] タブ内を右クリックし、[新規|サーバ] を選択します。
![](images/img119F.jpg)
- インストールされているサーバの種類を選択します。[次へ] をクリックします。
![](images/img119B.jpg)
- 左ペインでプロジェクト名を選択し、[追加] をクリックして右ペインに追加します。[完了] をクリックします。
![](images/img119C.jpg)
- 新しいサーバが [サーバ] ビューに表示されます。
![](images/img119D.jpg)
11.4. Hibernate Web アプリケーションをデプロイする
- アプリケーションを実行するには、[パッケージ・エクスプローラー] でプロジェクト名を右クリックし、[実行|サーバで実行] を選択します。
![](images/img119E.jpg)
[完了] をクリックします。
- サーバが正常に起動すると、テスト ブラウザ ペインが表示されます。テスト ブラウザ ペインのアドレス行に、http://localhost:8080/pages/addCustomer.jsf というアドレスを入力します。[コンソール] ビューにサーバの出力が表示されます。Tomcat サーバが完全に起動すると、ブラウザ内で addCustomer.jsf ページが呼び出されます。
- デプロイメント固有のエラーが発生した場合は、その問題を解決してアプリケーションが正常にデプロイされるようにします。
11.5. アプリケーションを実行する
addCustomer JSF ページがロードされると、以下のような画面が表示されます。
![](images/img122_1.JPG)
新しい顧客を追加するには、名前として「Bob」と入力し、[送信] をクリックします。
Customer 管理対象 Bean の addCustomer( ) アクション メソッドがアプリケーションによって呼び出され、顧客が正常に追加されると、リクエストが viewAllCustomers.jsp に転送されます。viewAllCustomers.jsp には、<h:dataTable> コンポーネントによって顧客リストが設定され、以下のように表示されます。
![](images/img122.JPG)
また、Workshop Studio の [コンソール] でデバッグ メッセージを確認することもできます。注意 : SQL 文が表示されるように、hibernate.show_sql プロパティを有効に設定しています。
![](images/img123.JPG)
顧客名「JOHN」に対する [View Orders] ボタンをクリックして、顧客「JOHN」による注文の一覧を表示します。
![](images/img124.JPG)
[前へ] をクリックして前のページに戻り、その他の顧客による注文の一覧を確認します。
作業が終了したら、Tomcat サーバを停止します。
チュートリアルの前後の手順に移動するには、次の矢印をクリックしてください。