blob: 1e765bf3eb2985e6e103b50a9781cfe22f6f60b5 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2010, 2011, Oracle and/or its affiliates. All rights reserved.
-->
<html>
<head>
<title>Java EEアプリケーションの開始</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<meta name="description" content="A tutorial that introduces NetBeans IDE support for some of the new features in Java EE 6.">
<link rel="stylesheet" href="../../../netbeans.css">
<meta name="author" content="ken ganfield">
</head>
<body>
<h1>Java EEアプリケーションの開始</h1>
<p>このドキュメントでは、Java Enterprise Edition 6 (Java EE 6)仕様の一部として導入された、いくつかの機能について簡単に紹介します。新機能を説明するため、このチュートリアルでは、エンティティ・クラス向けのEJB 3.1ステートレス・セッションBeanファサードを含む、単純なJava EE Webアプリケーションを作成する方法を示します。エンティティ・クラスとセッションBeanを生成するため、IDE内のウィザードを使用します。ウィザードで生成されるコードでは問合せを使用します。この問合せは、JPA 2.xの一部で、Java EE 6仕様に含まれるCriteria APIで定義されます。続いて、JSF 2.xで指定されたFaceletsビュー・フレームワークを使用するセッション・ファサードおよびプレゼンテーション・レイヤーにアクセスする、名前付き管理対象Beanを作成します。</p>
<p>このチュートリアルは、Adam Bien氏のブログ投稿(<a href="http://www.adam-bien.com/roller/abien/entry/simplest_possible_jsf_2_ejb" target="_blank" title="http://www.adam-bien.com/roller/abien/entry/simplest_possible_jsf_2_ejb">Simplest Possible JSF 2 / EJB 3.1 / JPA Component - With WAR Deployment</a>)に基づいています。Adam Bien氏のKenaiプロジェクト(<a href="http://kenai.com/projects/javaee-patterns" target="_blank" title="http://kenai.com/projects/javaee-patterns">Java EE Patterns and Best Practices</a>)および著書『Real World Java EE Patterns - Rethinking Best Practices』(<a href="http://press.adam-bien.com" target="_blank" title="http://press.adam-bien.com">http://press.adam-bien.com</a>で入手可能)には、他のJava EEの例が掲載されています。</p>
<p><b>チュートリアルの課題</b></p>
<img alt="このページの内容は、NetBeans IDE 7.2、7.3、7.4および8.0に適用されます" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" title="このページの内容は、NetBeans IDE 7.2、7.3、7.4および8.0に適用されます">
<ul>
<li><a href="#Exercise_1">Webアプリケーション・プロジェクトの作成</a></li>
<li><a href="#Exercise_2">エンティティ・クラスおよびセッション・ファサードの作成</a>
<ul>
<li><a href="#Exercise_2a">エンティティ・クラスの作成</a></li>
<li><a href="#Exercise_2b">セッション・ファサードの作成</a></li>
</ul>
</li>
<li><a href="#Exercise_3">JSF管理対象BeanおよびJSFページの作成</a>
<ul>
<li><a href="#Exercise_3a">管理対象Beanの作成</a></li>
<li><a href="#Exercise_3b">インデックス・ページの変更</a></li>
<li><a href="#Exercise_3c">結果ページの作成</a></li>
</ul>
</li>
<li><a href="#Exercise_4">プロジェクトの実行</a></li>
<li><a href="#Exercise_5">ソリューション・プロジェクトのダウンロード</a></li>
</ul>
<p><b>このチュートリアルに従うには、次のソフトウェアとリソースが必要です。</b></p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">ソフトウェアまたはリソース</th>
<th class="tblheader" scope="col">必須バージョン</th>
</tr>
<tr>
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td>
<td class="tbltd1">7.2、7.3、7.4、8.0、Java EEバージョン</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java Development Kit (JDK)</a></td>
<td class="tbltd1">バージョン7または8</td>
</tr>
<tr>
<td class="tbltd1">GlassFish Server Open Source Edition</td>
<td class="tbltd1">3.x、4.x</td>
</tr>
</tbody>
</table>
<p><b>前提条件</b></p>
<p>このドキュメントは、次のテクノロジについて基本的な知識またはプログラミング経験を持つ読者を想定して書かれています。</p>
<ul>
<li>Javaプログラミング</li>
<li>NetBeans IDE</li>
</ul>
<p class="tips"><a href="https://netbeans.org/projects/samples/downloads/download/Samples/JavaEE/SimpleEE6App72.zip">終了したプロジェクトのZIPアーカイブ</a>はダウンロードできます。</p>
<!-- ===================================================================================== -->
<a name="Exercise_1"></a>
<!--Exercise 1: -->
<h2>Webアプリケーション・プロジェクトの作成</h2>
<p>この課題では、単純なWebアプリケーションを作成します。Webアプリケーションを作成する際は、ターゲットのJava EEコンテナとしてGlassFish Serverを指定します。GlassFishサーバーはJava EEと互換性があり、このアプリケーションで必要とされるJSF 2.xライブラリを格納しています。</p>
<p>新規プロジェクト・ウィザードで、Java EEバージョンとして「Java EE 6 Web」または「Java EE 7 Web」を選択します。Java EE 6 WebおよびJava EE 7 Webは、完全なJava EEプラットフォームのサブセットを含む、軽量のJava EEプロファイルです。Java EE Webプロファイルは、リモート・インタフェースのサポート、完全なEJB 3.1仕様、Java Message Service (JMS) APIなどの高度なJava EEテクノロジを必要としないWebアプリケーション用に設計されています。</p>
<p>Webプロファイルは、エンタープライズWebアプリケーションでよく使用される、トランザクション処理および持続性管理をサポートします。Java EEのWebプロファイルは、ローカル・インタフェースがあるセッションBeanまたはインタフェースなしのセッションBeanを使用するWebアプリケーションで使用できます。アプリケーションでリモート・インタフェースを使用する場合は、完全なJava EEプロファイルが必要です。</p>
<ol>
<li>メイン・メニューから「ファイル」>「新規プロジェクト」([Ctrl]-[Shift]-[N]、Macの場合は[⌘]-[Shift]-[N])を選択します。</li>
<li>「Java Web」カテゴリから「Webアプリケーション」を選択し、「次」をクリックします。</li>
<li>プロジェクト名として「<strong>SimpleEE6App</strong>」と入力し、プロジェクトの場所を設定します。 </li>
<li>専用フォルダを使用するオプションが選択されている場合は選択を解除します。「次」をクリックします。<br/>このチュートリアルでは、ライブラリを他のユーザーまたはプロジェクトと共有する必要がないので、プロジェクト・ライブラリを専用のフォルダにコピーする理由はほとんどありません。<br/>
</li>
<li>「GlassFish Server」を選択し、「Java EEバージョン」を「Java EE 6 Web」または「Java EE 7 Web」に設定します。「次」をクリックします。<br/><img alt="新規プロジェクト・ウィザード" class="margin-around b-all" src="../../../images_www/articles/74/javaee/gettingstarted/newappwizard.png" title="新規プロジェクト・ウィザードの「サーバーと設定」パネル">
</li>
<li>「フレームワーク」ペインで「JavaServer Faces」を選択します。「終了」をクリックします。
<p>Java EE Webアプリケーションを開発し、GlassFishサーバーにデプロイしている場合は、デフォルトでJSF 2.xライブラリが選択されます。デフォルトのJSFライブラリのバージョンは、GlassFishサーバーにバンドルされているバージョンによって異なります。JSF 2.xライブラリにより、Faceletsをページ言語として使用でき、JSF 1.2およびJSPもサポートされます。</p>
<img alt="新規プロジェクト・ウィザード" class="margin-around b-all" src="../../../images_www/articles/74/javaee/gettingstarted/newappwizard2.png" title="新規プロジェクト・ウィザードの「フレームワーク」パネル"></li>
</ol>
<p>「終了」をクリックすると、IDEがプロジェクトを作成し、そのプロジェクトが「プロジェクト」ウィンドウで開きます。<tt>index.xhtml</tt>ページが自動的に作成され、エディタに表示されます。</p>
<a name="Exercise_2"></a>
<h2>エンティティ・クラスおよびセッション・ファサードの作成</h2>
<p>この項では、エンティティ・クラスおよびそのエンティティ・クラス用のセッション・ファサードを作成します。エンティティ・クラスは、プレーン・オールドJavaオブジェクト(POJO)で、<tt>@Entity</tt>注釈によってエンティティとして識別される単純なJavaクラスです。Java EE 5以降の仕様では、データベースの表を表すための持続オブジェクトとしてエンティティ・クラスを使用できます。Java Persistence APIでは、EJBモジュールを作成せずに、Webアプリケーションで持続性を使用できます。
</p>
<p>このアプリケーションのエンティティ・クラスのセッション・ファサードは、ステートレス・セッションBeanです。Java EE 6仕様の一部として導入されたエンタープライズJavaBean (EJB) 3.1のアーキテクチャにより、EJB 3.0では必須のビジネス・インタフェースを使用せずにセッションBeanを作成できます。また、Java EE 6仕様では、EJBコンポーネントを直接WARアーカイブにパッケージ化できます。これにより、EARアーカイブにJARアーカイブとしてパッケージされるEJBモジュールを別途作成する必要がなくなるため、小規模なWebアプリケーションの開発を簡素化できます。ただし、複数のマシンに分散された、規模の大きいエンタープライズ・アプリケーションの場合は、EARアーカイブを作成して、ビジネス・ロジックをプレゼンテーション・レイヤーから分離します。</p>
<p class="tips">IDEでのEJB 3.1の使用に関する詳細は、<a href="javaee-entapp-ejb.html">EJB 3.1を使用したエンタープライズ・アプリケーションの作成</a>のチュートリアルを参照してください。</p>
<p class="tips">エンティティ・クラスに関する詳細は、<a href="http://download.oracle.com/javaee/7/tutorial/doc/">Java EE 7チュートリアル</a><a href="http://docs.oracle.com/javaee/7/tutorial/doc/persistence-intro.htm">Java Persistence API入門</a>の章を参照してください。</p>
<p class="tips">セッションBeanの詳細は、<a href="http://download.oracle.com/javaee/7/tutorial/doc/">Java EE 7チュートリアル</a><a href="http://docs.oracle.com/javaee/7/tutorial/doc/ejb-intro002.htm">セッションBeanとは</a>の章を参照してください。</p>
<div class="indent">
<a name="Exercise_2a"></a>
<h3>エンティティ・クラスの作成</h3>
<p>この課題では、新規エンティティ・クラス・ウィザードを使用して単純な持続性エンティティ・クラスを作成します。また、このウィザードを使用して、このアプリケーションで使用するデータ・ソースとエンティティ・マネージャを定義する持続性ユニットも作成します。表のデータを表示するためのフィールドをクラスに1つ追加し、新規フィールド用の取得メソッドと設定メソッドを生成します。</p>
<p>エンティティ・クラスには主キーが必要です。ウィザードを使用してエンティティ・クラスを作成する場合、フィールドを主キーとして宣言するため、IDEではデフォルトで<tt>id</tt>フィールドが生成され、<tt>@Id</tt>注釈を使用してフィールドに注釈が付けられます。また、プライマリIDフィールドのキー生成戦略を指定するための<tt>@GeneratedValue</tt>という注釈も追加されます。</p>
<p>プロジェクトでJava Persistenceを使用すると、持続フィールドまたはプロパティ向けのオブジェクト・リレーショナル・マッピング情報を提供するデプロイメント・ディスクリプタの構成の必要性が除去され、アプリケーション開発が大幅に簡素化されます。かわりに、注釈を使用して、これらのプロパティを単純なJavaクラス内で直接定義できます。</p>
<p>エンティティの持続性は、EntityManager APIによって管理されます。EntityManager APIは持続性コンテキストを処理し、各持続性コンテキストはエンティティ・インスタンスのグループです。アプリケーション開発時には、クラス内で注釈を使用して、エンティティのインスタンスからなる持続性コンテキストのインスタンスを指定できます。そうすると、エンティティのインスタンスのライフサイクルは、コンテナによって処理されます。</p>
<p>エンティティ・クラスを作成するには、次の手順を行います:</p>
<ol>
<li>プロジェクト・ノードを右クリックし、「新規」>「その他」を選択します。</li>
<li>「持続性」カテゴリから「エンティティ・クラス」を選択します。「次」をクリックします。</li>
<li>クラス名に「<strong>Message</strong>」と入力します。</li>
<li>パッケージに「<strong>entities</strong>」と入力します。</li>
<li>「持続性ユニットを作成」を選択します。「次」をクリックします。</li>
<li>データ・ソースを選択します(たとえば、JavaDBを使用する場合は<tt>jdbc/sample</tt>を選択)。
<p>データ・ソース<tt>jdbc/sample</tt>は、IDEおよびGlassFishサーバーのインストール時にIDEにバンドルされますが、別のデータベースを使用する場合は他のデータ・ソースを指定することもできます。</p>
<p>他のデフォルト・オプション(持続性ユニット名、EclipseLink持続性プロバイダ)はそのまま使用できます。持続性ユニットが「Java Transaction APIを使用」になっていること、およびアプリケーションデプロイ時にエンティティ・クラスに基づいた表が作成されるように「表生成戦略」が「作成」に設定されていることを確認します。
</p></li>
<li>新規エンティティ・クラス・ウィザードで「終了」をクリックします。
<p>「終了」をクリックするとエンティティ・クラスが作成され、そのクラスがエディタに表示されます。IDEによってIDフィールド<tt>private Long id;</tt>が作成され、フィールドに<tt>@Id</tt>および<tt>@GeneratedValue(strategy=GenerationType.AUTO)</tt>という注釈が付与されます。</p></li>
<li>エディタで、<tt>id</tt>フィールドの下に<tt>message</tt>フィールド(太字で表示)を追加します。
<pre class="examplecode">
private Long id;
<strong>private String message;</strong></pre>
</li>
<li>エディタ内を右クリックして「コードを挿入」([Alt]-[Insert]、Macの場合は[Ctrl]-[I])を選択し、「取得メソッドおよび設定メソッド」を選択します。</li>
<li>「取得メソッドおよび設定メソッドの生成」ダイアログ・ボックスで<tt>message</tt>フィールドを選択し、「生成」をクリックします。
<p><tt>message</tt>フィールドに取得メソッドと設定メソッドが生成されます。</p>
<img alt="「持続性ユニットを作成」ウィザード" class="margin-around b-all" src="../../../images_www/articles/72/javaee/gettingstarted/getters-dialog.png" title="「持続性ユニットを作成」ウィザード"></li>
<li>変更を保存します。</li>
</ol>
<p>エンティティ・クラスは、データベース内の表を表します。このアプリケーションを実行すると、Messageのデータベース表が自動的に作成されます。この表には、<tt>id</tt>列と<tt>message</tt>列が含まれます。</p>
<p>XMLエディタで持続性ユニットを見ると、アプリケーションがJava Transaction API (JTA)(<tt>transaction-type="JTA"</tt>)を使用しています。これは、持続性コンテキストでのエンティティのライフサイクルの管理義務がコンテナに割り当てられることを指定します。この結果、エンティティのライフサイクルがアプリケーションではなくコードで管理されるため、コードが少なくてすみます。JTAを使用してトランザクションを管理する方法については、<a href="http://www.oracle.com/technetwork/java/javaee/jta/index.html" target="_blank">Java Transaction API</a>のドキュメントを参照してください。</p>
<a name="Exercise_2b"></a>
<h3>セッション・ファサードの作成</h3>
<p>この課題では、ウィザードを使用して、Messageエンティティのステートレス・セッション・ファサードを作成します。EJB 3.1仕様で、セッションBeanのビジネス・インタフェースがオプションになったことが示されています。このアプリケーションでは、Beanにアクセスするクライアントがローカル・クライアントであるため、Beanを公開する方法として、ローカル・インタフェースを使用する方法と、インタフェースなしのビューを使用するオプションがあります。</p>
<p>セッションBeanを作成するには、次の手順を行います:</p>
<ol>
<li>プロジェクト・ノードを右クリックし、「新規」>「その他」を選択します。</li>
<li>「Enterprise JavaBeans」カテゴリから「エンティティ・クラスのセッションBean」を選択します。「次」をクリックします。</li>
<li><tt>Message</tt>」エンティティを選択し、「追加」をクリックします。「次」をクリックします。</li>
<li>パッケージに「<strong>boundary</strong>」と入力します。「終了」をクリックします。
<p>セッションBeanのビジネス・インタフェースを作成する必要はありませんでした。かわりに、このアプリケーションでは、インタフェースなしのビューを使用して、Beanがローカルの管理対象Beanに公開されます。</p>
<img alt="「エンティティ・クラスのセッションBean」ウィザード" class="margin-around b-all" src="../../../images_www/articles/72/javaee/gettingstarted/sessionwizard.png" title="「エンティティ・クラスのセッションBean」ウィザード"></li>
</ol>
<p>「終了」をクリックすると、IDEによってセッション・ファサード・クラス<tt>MessageFacade.java</tt>および<tt>AbstractFacade.java</tt>が作成され、エディタでこれらのファイルが開きます。生成されたコードでわかるように、ステートレス・セッションBeanコンポーネントとして<tt>MessageFacade.java</tt>を宣言するため、注釈<tt>@Stateless</tt>が使用されます。<tt>MessageFacade.java</tt>は、<tt>AbstractFacade.java</tt>を拡張したもので、ビジネス・ロジックを含み、トランザクションを管理します。</p>
<pre class="examplecode">
@Stateless
public class MessageFacade extends AbstractFacade&lt;Message&gt; {
@PersistenceContext(unitName = "SimpleEE6AppPU")
private EntityManager em;
</pre>
<p>ウィザードを使用してエンティティのファサードを作成すると、エンティティ・マネージャ・リソースをセッションBeanコンポーネントに注入し、持続性ユニットの名前を指定するため、デフォルトで<tt>PersistenceContext</tt>注釈(<tt>@PersistenceContext(unitName="SimpleEE6AppPU")</tt>)が追加されます。この例では、持続性ユニットの名前が明示的に宣言されますが、アプリケーションに持続性ユニットが1つしかない場合、この名前はオプションです。</p>
<p>IDEでは、エンティティを作成、編集、除去および検索するためのメソッドが、<tt>AbstractFacade.java</tt>に生成されます。EntityManager APIでは、持続性コンテキストと連携するために使用されるメソッドが定義されます。IDEによって、エンティティ・オブジェクトの検索に使用可能な、一般的に使用されるデフォルトの問合せメソッドがいくつか生成されます。<tt>findAll</tt>メソッド、<tt>findRange</tt>メソッドおよび<tt>count</tt>メソッドは、問合せを作成するため、Criteria APIで定義されたメソッドを使用します。Criteria APIは、Java EE 6仕様に含まれるJPA 2.x仕様の一部です。</p>
</div>
<!-- ===================================================================================== -->
<a name="Exercise_3"></a>
<h2>JSF管理対象BeanおよびJSFページの作成</h2>
<p>この項では、JavaServer Faces (JSF) 2.xを使用してアプリケーションのプレゼンテーション・レイヤーを作成し、JSFページで使用される管理対象バッキングBeanを作成します。JSF 2.x仕様により、JSFベースのアプリケーション用の優先ビュー・テクノロジとして、Faceletsのサポートが追加されます。JSF 2.x以降では、クラスを管理対象Beanと宣言するため、ソース・コードで<tt>@ManagedBean</tt>注釈を使用することもできます。JSF管理対象Beanを宣言するために<tt>faces-config.xml</tt>ファイルにエントリを追加する必要はなくなりました。管理対象Beanのメソッドにアクセスするため、JSFページでBean名を使用できます。</p>
<p class="tips">IDEでのJavaServer Faces 2.x仕様のサポートについては、<a href="../web/jsf20-support.html">NetBeans IDEでのJSF 2.xサポート</a>を参照してください。</p>
<p class="tips">JavaServer Faces 2.x仕様の詳細は、Java EE 7チュートリアルの<a href="http://docs.oracle.com/javaee/7/tutorial/doc/jsf-intro.htm" target="_blank">JavaServer Facesテクノロジ</a>の章を参照してください。</p>
<div class="indent">
<a name="Exercise_3a"></a>
<h3>管理対象Beanの作成</h3>
<p>この課題では、セッション・ファサードへのアクセスに使用される、単純なJSF管理対象Beanを作成します。JSF 2.x仕様により、Beanクラスで注釈を使用して、クラスをJSF管理対象Beanとして識別したり、スコープを指定したり、Beanの名前を指定したりすることができます。</p>
<p>管理対象Beanを作成するには、次の手順を実行します。</p>
<ol>
<li>プロジェクト・ノードを右クリックし、「新規」>「その他」を選択します。</li>
<li>「JavaServer Faces」カテゴリからJSF管理対象Beanを選択します。「次」をクリックします。</li>
<li>クラス名に「<strong>MessageView</strong>」と入力します。
<p>Beanでメソッドをコールするときに、管理対象Bean名の<tt>MessageView</tt>を、JSFページ<tt>index.xhtml</tt><tt>inputText</tt>および<tt>commandButton</tt>の値として使用します。</p>
</li>
<li>パッケージに「<strong>my.presentation</strong>」と入力します。</li>
<li>管理対象Beanに使用する名前に「<strong>MessageView</strong>」と入力します。
<p class="notes"><strong>注意:</strong>ウィザードを使用して管理対象Beanを作成すると、デフォルトでは、Beanクラスの名前に基づいて先頭を小文字にした名前がBeanに割り当てられます。このチュートリアルおよびデモでは、大文字で始まる名前をBeanに明示的に割り当てます。JSFページでこのBeanを参照するときは、<tt>messageView</tt>ではなく<tt>MessageView</tt>を使用します。名前を明示的に割り当てなかった場合は、JSFページでデフォルトの<tt>messageView</tt>を使用します。</p></li>
<li>「スコープ」を「リクエスト」に設定します。「終了」をクリックします。</li>
</ol>
<img alt="新規JSF管理対象Beanウィザード" class="margin-around b-all" src="../../../images_www/articles/72/javaee/gettingstarted/newjsfbean.png" title="新規JSF管理対象Beanウィザード">
<p>「終了」をクリックすると、IDEはBeanクラスを作成し、そのクラスがエディタに表示されます。「プロジェクト」ウィンドウに次のファイルが表示されます。</p>
<img alt="ファイル構造を示す「プロジェクト」ウィンドウ" class="margin-around b-all" src="../../../images_www/articles/72/javaee/gettingstarted/projectswindow.png" title="ファイル構造を示す「プロジェクト」ウィンドウ">
<p>エディタで、<tt>@ManagedBean</tt>注釈、<tt>@RequestScoped</tt>注釈およびBeanの名前が追加されたことがわかります。</p>
<pre class="examplecode">
@ManagedBean(name="MessageView")
@RequestScoped
public class MessageView {
/** Creates a new instance of MessageView */
public MessageView() {
}
}
</pre>
<p>ここで、依存性の注入を使用してMessageFacadeセッションBeanへの参照を取得するための<tt>@EJB</tt>注釈を追加します。ファサードに公開された<tt>findAll</tt>メソッドと<tt>create</tt>メソッドもコールします。IDEのコード補完は、メソッドを入力するときに役立ちます。</p>
<ol>
<li>エディタ内を右クリックして「コードを挿入」([Alt]-[Insert]、Macの場合は[Ctrl]-[I])を選択し、ポップアップ・メニューから「エンタープライズBeanをコール」を選択します。</li>
<li>「エンタープライズBeanをコール」ダイアログ・ボックスで「MessageFacade」を選択します。「OK」をクリックします。<br /><img alt="「エンタープライズBeanをコール」ダイアログ" class="margin-around b-all" src="../../../images_www/articles/72/javaee/gettingstarted/callbean.png" title="「エンタープライズBeanをコール」ダイアログ">
<p>「OK」をクリックすると、次のコード(太字で表示)が追加され、Beanが注入されます。</p>
<pre class="examplecode">
public class MessageView {
/** Creates a new instance of MessageView */
public MessageView() {
}
// Injects the MessageFacade session bean using the @EJB annotation
<strong>@EJB
private MessageFacade messageFacade;</strong>
}
</pre>
</li>
<li>次のコードを追加して新しいインスタンスを作成します。
<pre class="examplecode">/** Creates a new instance of MessageView */
public MessageView() {
this.message = new Message();
}</pre>
</li>
<li>クラスに次のコードを追加します。
<pre class="examplecode">
// Creates a new field
private Message message;
// Calls getMessage to retrieve the message
public Message getMessage() {
return message;
}
// Returns the total number of messages
public int getNumberOfMessages(){
return messageFacade.findAll().size();
}
// Saves the message and then returns the string "theend"
public String postMessage(){
this.messageFacade.create(message);
return "theend";
}
</pre>
</li>
<li>エディタ内を右クリックして「インポートを修正」([Alt]-[Shift]-[I]、Macの場合は[⌘]-[Shift]-[I])を選択し、変更内容を保存します。</li>
</ol>
<p class="tips">エディタでコード補完を使用すると、コードの入力に役立ちます。
</p>
<p><tt>postMessage</tt>メソッドが文字列「theend」を返します。JSF 2.x仕様では、Faceletsテクノロジを使用するアプリケーションで暗黙ナビゲーション・ルールを使用できます。このアプリケーションは、<tt>faces-config.xml</tt>にナビゲーション・ルールが構成されていません。かわりに、ナビゲーション・ハンドラが、アプリケーション内で適切なページを検索しようとします。この場合、ナビゲーション・ハンドラは、<tt>postMessage</tt>メソッドが呼び出されると、<tt>theend.xhtml</tt>という名前のページを検索しようとします。<p>
<a name="Exercise_3b"></a>
<h3>インデックス・ページの変更</h3>
<p>この課題では、<tt>index.xhtml</tt>ページに単純な変更を加えて、いくつかのUIコンポーネントを追加します。入力テキスト・フィールドとボタンのあるフォームを追加します。</p>
<ol>
<li>エディタで<tt>index.xhtml</tt>を開きます。</li>
<li>次の単純なフォームを<tt>&lt;h:body></tt>タグの間に追加するようにファイルを変更します。
<pre class="examplecode">
&lt;h:body&gt;
<strong>&lt;f:view&gt;
&lt;h:form&gt;
&lt;h:outputLabel value="Message:"/&gt;&lt;h:inputText value="#{MessageView.message.message}"/&gt;
&lt;h:commandButton action="#{MessageView.postMessage}" value="Post Message"/&gt;
&lt;/h:form&gt;
&lt;/f:view&gt;</strong>
&lt;/h:body&gt;</pre>
<p class="tips">JSFのコード補完は、コードを入力するときに役立ちます。
</p>
<img alt="ソース・エディタでのコード補完" class="margin-around b-all" src="../../../images_www/articles/72/javaee/gettingstarted/jsfcodecompletion1.png" title="ソース・エディタでのコード補完">
<p class="notes"><strong>注意:</strong>コードをコピーしてファイルに貼り付けると、<tt>&lt;f:view></tt>がある行の左マージンに警告が表示されます。この行に挿入カーソルを置いて[Alt]-[Space]を入力すると、エラーの解決方法に関するヒントを開くことができます。このヒントは、<tt>xmlns:f="http://xmlns.jcp.org/jsf/core"</tt>というライブラリ宣言を追加する必要があることを示しています。</p>
</li>
<li>変更を保存します。
</li>
</ol>
<p><tt>inputText</tt>コンポーネントと<tt>commandButton</tt>コンポーネントが、名前付きのJSF管理対象Bean<tt>MessageView</tt>でメソッドを呼び出します。<tt>postMessage</tt>メソッドが「theend」を返し、ナビゲーション・ハンドラが<tt>theend.xhtml</tt>という名前のページを検索します。</p>
<a name="Exercise_3c"></a>
<h3>結果ページの作成</h3>
<p>この課題では、JSFページ<tt>theend.xhtml</tt>を作成します。このページは、ユーザーが<tt>index.xhtml</tt>のPost Messageボタンをクリックし、JSF管理対象Beanの<tt>postMessage</tt>メソッドを呼び出したときに表示されます。</p>
<ol>
<li>プロジェクト・ノードを右クリックし、「新規」>「その他」を選択します。</li>
<li>「JavaServer Faces」カテゴリから「JSFページ」を選択します。「次」をクリックします。</li>
<li>ファイル名に「<strong>theend</strong>」と入力します。</li>
<li>「Facelets」オプションが選択されていることを確認します。「終了」をクリックします。<br> <img alt="新規JSFファイル・ウィザードのスクリーンショット" class="margin-around b-all" src="../../../images_www/articles/72/javaee/gettingstarted/result-jsf-page.png" title="新規JSFファイル・ウィザードでのtheend JSFファイルの作成">
</li>
<li>次のコードを&lt;h:body> タグの間に入力してファイルを変更します。
<pre class="examplecode">
&lt;h:body&gt;
<strong>&lt;h:outputLabel value="Thanks! There are "/&gt;
&lt;h:outputText value="#{MessageView.numberOfMessages}"/&gt;
&lt;h:outputLabel value=" messages!"/&gt;</strong>
&lt;/h:body&gt;</pre>
</li>
</ol>
<p class="tips">入力を始めると、<tt>xmlns:h="http://xmlns.jcp.org/jsf/html"</tt>タグ・ライブラリ定義がJSF要素のファイルに自動的に追加されます。</p>
</div>
<a name="Exercise_4"></a>
<h2>アプリケーションの実行</h2>
<p>これで、アプリケーションのコード作成が終了しました。ブラウザでアプリケーションをテストできます。</p>
<ol>
<li>「プロジェクト」ウィンドウでプロジェクト・ノードを右クリックし、「実行」を選択します。
<p>「実行」を選択すると、アプリケーションがビルドおよびデプロイされ、<tt>index.xhtml</tt>がブラウザに表示されます。</p></li>
<li>テキスト・フィールドにメッセージを入力します。「Post Message」をクリックします。<br/><img alt="ブラウザのアプリケーション" class="margin-around b-all" src="../../../images_www/articles/72/javaee/gettingstarted/browser1.png" title="ブラウザのアプリケーション">
</li>
</ol>
<p>「Post Message」をクリックすると、メッセージがデータベースに保存され、メッセージ数が取得され、表示されます。</p>
<img alt="結果が表示されたブラウザのアプリケーション" class="margin-around b-all" src="../../../images_www/articles/72/javaee/gettingstarted/browser2.png" title="結果が表示されたブラウザのアプリケーション"> <a name="Exercise_5"></a>
<h2>ソリューション・プロジェクトのダウンロード</h2>
<p>このチュートリアルで使用するサンプル・プロジェクトは、次の方法でダウンロードできます。</p>
<ul>
<li><a href="https://netbeans.org/projects/samples/downloads/download/Samples/JavaEE/SimpleEE6App72.zip">終了したプロジェクトのZIPアーカイブ</a>をダウンロードします。</li>
<li>次の手順を実行して、プロジェクト・ソースをNetBeansのサンプルからチェックアウトします。
<ol>
<li>メイン・メニューから「チーム」>「Subversion」>「チェックアウト」を選択します。</li>
<li>「チェックアウト」ダイアログ・ボックスで次のリポジトリURLを入力します。<br /><tt>https://svn.netbeans.org/svn/samples~samples-source-code</tt><br />「次」をクリックします。</li>
<li>「参照」をクリックして「リポジトリ・フォルダを参照」ダイアログ・ボックスを開きます。</li>
<li>ルート・ノードを展開し、<strong>samples/javaee/SimpleEE6App</strong>を選択します。「OK」をクリックします。</li>
<li>ソースのローカル・フォルダを指定します(ローカル・フォルダは空である必要があります)。</li>
<li>「終了」をクリックします。
<p>「終了」をクリックすると、IDEではローカル・フォルダがSubversionリポジトリとして初期化され、プロジェクト・ソースがチェックアウトされます。</p>
</li>
<li>チェックアウトが完了するときに表示されるダイアログで、「プロジェクトを開く」をクリックします。</li>
</ol>
<p class="notes"><strong>注意:</strong></p>
<ul>
<li>ソースをチェックアウトするには、Subversionクライアントが必要です。Subversionのインストールの詳細は、<a href="../ide/subversion.html">NetBeans IDEでのSubversionガイド</a><a href="../ide/subversion.html#settingUp">Subversionの設定</a>の項を参照してください。</li>
</ul>
</li>
</ul>
<br>
<div class="feedback-box" ><a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Getting%20Started%20with%20Java%20EE%206%20Applications">このチュートリアルに関するご意見をお寄せください</a></div>
<br style="clear:both;" />
<!-- ======================================================================================= -->
<h2><a name="nextsteps"></a>関連項目</h2>
<p>NetBeans IDEを使用したJava EEアプリケーションの開発方法の詳細は、次のリソースを参照してください。
</p>
<ul>
<li><a href="javaee-intro.html">Java EEテクノロジ入門</a></li>
<li><a href="../web/jsf20-support.html">NetBeans IDEでのJSF 2.xのサポート</a></li>
<li><a href="../../trails/java-ee.html">Java EEおよびJava Webの学習</a></li>
</ul>
<p>Java EEテクノロジを使用したアプリケーション開発の詳細は、<a href="http://download.oracle.com/javaee/7/tutorial/doc/">Java EE 7チュートリアル</a>を参照してください。</p>
<p><a href="../../../community/lists/top.html">nbj2eeメーリング・リストに登録する</a>ことによって、NetBeans IDE Java EE開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。</p>
</body>
</html>