前 次 前/次ボタンと目次ボタンとの区切り線

11. アプリケーションをテストする

この手順では、DAO クラス、JSP、サーブレットなどの既製の Web コンポーネントをインポートし、サーバ コンフィグレーションを作成し、Hibernate Web アプリケーションをデプロイおよび実行します。

11.1. Web コンポーネント (JSP、DAO など) をインポートおよび編集する

  1. 以下の Java パッケージを作成します。
  2. Workshop-Hibernate-Tutorial/web/Resources/dao-classes フォルダにあるすべてのクラスを、com.bea.dao パッケージにコピーします。このパッケージに属するクラスは、Hibernate によるオブジェクト永続性の管理に使用されます。
  3. 同じように、Workshop-Hibernate-Tutorial/web/Resources/util フォルダにある MessageFactory クラスを com.bea.util パッケージにコピーします。
  4. Workshop-Hibernate-Tutorial/web/Resources/JSPs フォルダにあるすべての JSP を、Workshop-Hibernate-Tutorial/web/pages フォルダにコピーします。
  5. Workshop-Hibernate-Tutorial/web/Resources/stylesheet.css ファイルを、web フォルダにコピーします。
  6. Workshop-Hibernate-Tutorial/web/Resources/application.properties ファイルをコピーし、web/WEB-INF/src/java/resources フォルダにある application.properties ファイルに上書きします。
  7. com.bea.beans パッケージに、新しいクラス CustomerManagedBean を作成します。CustomerManagedBean クラスに、customer プロパティ (com.bea.beans.Customer 型) および対応するゲッター/セッター メソッドを追加します。
  8. com.bea.beans.CustomerManagedBean.java には、さらにいくつかのアクション メソッドを追加します。それらは、データ ストアに顧客を追加する操作と、特定の顧客による注文の検索を実行するためのメソッドです。
  9. 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;
            }
            
        }
  10. 電球アイコン を使用して、以下のパッケージをインポートします。
  11. CustomerManagedBean.java ファイルを保存します。

11.2. Faces デプロイメント記述子を編集する

  1. 管理対象 Bean とナビゲーション ルールは、faces-config.xml ファイルで定義する必要があります。
  2. web/Resources フォルダに、この Web アプリケーション用の管理対象 Bean とナビゲーション ルールを定義した faces-config.xml ファイルがあります。web/Resources/faces-config.xmlweb/WEB-INF/config フォルダにコピーしてください。
  3. web/WEB-INF/config/faces-config.xml ファイルを開き、Faces のコンフィグレーションを確認します。リクエスト スコープの管理対象 Bean として、Customer および CustomerManagedBean が定義されています。また、アプリケーション スコープの管理対象 Bean として DAOFactory が定義されています。

  4. ナビゲーション ルールとしては、addCustomer.jsp および viewAllCustomers.jsp 用のルールがそれぞれ定義されています。addCustomer.jsp のナビゲーション ケースには、送り先ページとして /pages/viewAllCustomers.jsp が、結果として success が指定されています。

  5. 同じように、viewAllCustomers.jsp のナビゲーション ケースには、送り先ページとして /pages/viewOrders.jsp が、結果として orderList が指定されています。

  6. faces-config.xml ファイルを保存します。

11.3. サーバ コンフィグレーションを作成する

Workshop では、現在広く使用されているほとんどの Web コンテナでアプリケーションを実行およびデバッグできます。ただし、このサンプル アプリケーションをデプロイする前に、サーバをインストールしておく必要があります。

  1. [サーバ] タブをクリックします。[サーバ] ビュー タブが表示されていない場合は、[ウィンドウパースペクティブを開くWorkshop] を選択します (または、[ウィンドウビューの表示その他] を選択してから [サーバ] を展開し、[サーバ] を選択して [OK] をクリックします)。
  2. [サーバ] タブ内を右クリックし、[新規サーバ] を選択します。

  3. インストールされているサーバの種類を選択します。[次へ] をクリックします。

  4. 左ペインでプロジェクト名を選択し、[追加] をクリックして右ペインに追加します。[完了] をクリックします。

  5. 新しいサーバが [サーバ] ビューに表示されます。

11.4. Hibernate Web アプリケーションをデプロイする

  1. アプリケーションを実行するには、[パッケージ・エクスプローラー] でプロジェクト名を右クリックし、[実行サーバで実行] を選択します。

    [完了] をクリックします。

  2. サーバが正常に起動すると、テスト ブラウザ ペインが表示されます。テスト ブラウザ ペインのアドレス行に、http://localhost:8080/pages/addCustomer.jsf というアドレスを入力します。[コンソール] ビューにサーバの出力が表示されます。Tomcat サーバが完全に起動すると、ブラウザ内で addCustomer.jsf ページが呼び出されます。
  3. デプロイメント固有のエラーが発生した場合は、その問題を解決してアプリケーションが正常にデプロイされるようにします。

11.5. アプリケーションを実行する

addCustomer JSF ページがロードされると、以下のような画面が表示されます。

新しい顧客を追加するには、名前として「Bob」と入力し、[送信] をクリックします。

Customer 管理対象 Bean の addCustomer( ) アクション メソッドがアプリケーションによって呼び出され、顧客が正常に追加されると、リクエストが viewAllCustomers.jsp に転送されます。viewAllCustomers.jsp には、<h:dataTable> コンポーネントによって顧客リストが設定され、以下のように表示されます。

また、Workshop Studio の [コンソール] でデバッグ メッセージを確認することもできます。注意 : SQL 文が表示されるように、hibernate.show_sql プロパティを有効に設定しています。

顧客名「JOHN」に対する [View Orders] ボタンをクリックして、顧客「JOHN」による注文の一覧を表示します。

[前へ] をクリックして前のページに戻り、その他の顧客による注文の一覧を確認します。

作業が終了したら、Tomcat サーバを停止します。

チュートリアルの前後の手順に移動するには、次の矢印をクリックしてください。

 

ナビゲーションをスキップ バー   ページの先頭