開発者:Java
Oracle WorkshopによるJava EE 5 Web標準のサポートOracle Workshop for WebLogicを使用したJava EE Webアプリケーションの開発について学習します。 Andrei Cioroianu著 2008年8月公開 長い間、J2EEは高度で複雑なテクノロジーだと思われてきました。 しかし、時間を割いてきちんと理解してみると、スケーラブルな多層エンタープライズ・アプリケーションをコンポーネント・ベースで構築するための、工夫さ れた使いやすいソリューションであることがわかるでしょう。 Java EE 5には従来のJ2EE機能が引き継がれていますが、シンプルさと使いやすさは新バージョンのほうがはるかに上です。 この記事では、Java EE 5の新機能をいくつか紹介するとともに、Oracle Workshop for WebLogic(Oracle Workshop、旧称BEA Workshop)を使用して簡単なWebアプリケーションを構築していきます。 ここで学習する事項は、Webプロジェクトの設定、Java Server Faces(JSF)ベース・フォームの構築、ページ・ナビゲーション・ルールの定義、アノテーション付きセッションEJBの作成、JSFマネージド Beanでの依存性注入の使用、アプリケーションのパッケージ化によるEARファイルの作成、ローカルまたはリモートのOracle WebLogic Serverへの配置です。 Java EE 5とOracle Workshopを使用して開発を簡単にJava EE 5では、式言語が統一され、JSP標準とJSF標準の統合が強化されました。具体的には、タグ・ファイルを含むすべてのカスタムJSPタグから、属性内の 遅延評価値と遅延評価メソッドを使用できるようになりました。 いくつかのJSTLタグ(例:<c:forEach>)では遅延評価式がサポートされており、JSFコンポーネントとともに使用できます。 また、JSFレンダリングが改善され、<f:verbatim>コンポーネントが自動生成されるようになったため、<f: verbatim>を明示的に使用しなくても、WebページでJSFタグとHTMLコンテンツを問題なく混在させられるようになりました。 XMLベースのEJBデプロイメント・ディスクリプタをJava EEのアノテーションで置き換えると、変更を加える際に編集するファイルが少なくて済みます。 さらに、EJBの永続性がPlain Old Java Object(POJO)モデルをベースとするようになりました。 アノテーションは、EJB、サーブレット、JSFマネージドBeanを含む、Javaベースのあらゆるコンポーネントで使用できます。 これらのメリットは絶大です。 たとえば、Session Beanが必要な場合、インタフェースとその実装に対するアノテーションをつけるだけでよいのです。 Web層からこれをコールする場合は、EJBコンポーネントへの参照に@EJBアノテーションをつけてJSFマネージドBeanに注入すれば、あとはアプ リケーション・サーバーが下層処理の面倒を見てくれます。 この記事のサンプル・アプリケーションでは、JSFフォームの実装方法を示します。このフォームは、バッキングBeanを使用して、翻訳サービスをシミュ レートするEJBコンポーネントとやりとりをおこないます。 さまざまな改善が施されたとはいえ、テキスト・エディタを使用してJava EEアプリケーションのコーディングをおこなうことは得策ではありません。 世間には、開発生産性を大幅に向上させる最新のJava IDEがいくつもあります。 Oracle Workshopは、Eclipseプラットフォームに多数のウィザードやエディタが加わった秀逸の開発ツールです。 Servlets 2.5、JSP 2.1、JSF 1.2、JSTL 1.2、EJB 3、JAX-WS、JAXB 2.0をはじめとして、ほとんどの重要なJava EE標準がサポートされています。 さらに、Oracle Workshopの独自機能であるAppXRayテクノロジーを利用して、Javaクラス、Webページ、構成ファイルを含むさまざまなソース・ファイル が分析されます。 こうして収集された情報は、コードの完成と検証をおこなう機能などに活用されることで、開発エクスペリエンスを向上させます。また、この記事におけるデモ ンストレーションでも使用しますが、AppXplorerとAppXaminerを使用すると、ファイルのナビゲーションや依存関係の視覚化が簡単に実行 できます。 Webプロジェクトの設定この項では、Webプロジェクトの作成と設定の方法について説明します。 プロジェクトの設定にはOracle Workshopの Dynamic Web Projectウィザードを使用し、JSFフレームワークについては Faces Configurationエ ディタを使用します。 Webプロジェクトの作成「 File」→「 New」→「 Project...」 の順にクリックします。 New Projectウィンドウで、「 Web」ノー ドを開いて「 Dynamic Web Project」を選択します。 次に、「 Next」 をクリックします。 Project nameに WebPrjと入力し、Target Runtimeで「 Oracle WebLogic Server v10.3」を選択し、「 Default Configuration for Oracle WebLogic Server v10.3」を選択します。また、EJBを使用する場合は「 Add project to an EAR」チェックボックスにチェックをつけ、 EAR Project Nameと いうテキスト・フィールドに EarPrjと入力してから、「 Next」をクリック します。 次のスクリーンでは、オプションをデフォルトのままにして、「 Finish」をクリックします。 Oracle Workshopにより、 WebContentフォルダを含むWebプロジェクトが 作成されます。このフォルダに含まれる index.jspページにより、 pagesサ ブフォルダから welcome.jspページへリクエストが転送されます。 Webブラウザでの相対URLに関する問題を避けるために、 index.jsp内の <jsp:forward>を <c:redirect>で 置き換えることもできます。 <%@ page language="java" contentType="text/html;charset=UTF-8"%> WEB-INFフォルダには構成ファイル(weblogic.xml、web.xml、faces -config.xml)が含まれており、Oracle Workshopを使用して編集することができます。 Webプロジェクトの設定以下で確認できるとおり、New Projectウィザードにより生成された web.xmlファイ ルには、あらかじめJSF設定が含まれています。 <?xml version="1.0" encoding="UTF-8"?> Oracle WebLogic Server 10g Release 3では、web.xmlとfaces-config.xmlに対し、Java EE 5によって定義された新しい標準XMLスキーマがサポートされています。 コンテキスト・パラメータや、サーブレット・マッピング、またはフィルタ・マッピングの新規追加など、構成を変更する場合は、「 web.xml」 ファイルをダブルクリックしてから、 Deployment Descriptor Elementsに表示されたリス ト内の項目を右クリックしてください。 Weblogic固有のオプションを編集する場合は、「 weblogic.xml」をダブルクリッ クします。オプションは、General、Libraries、Container、JSP、Security、およびSessionの6つのタブにグ ループ化されています。 7番目のタブでは、構成ファイルのソースが確認できます。 以下のスクリーンショットでは、JSP関連オプションが表示されています。 また、Webプロジェクトには srcフォルダが含まれており、 application.propertiesリ ソース・バンドルを含む resourcesパッケージが付加されています。このリソース・バンドルは、 faces-config.xmlファ イルで設定できます。 JSF構成Project Explorerで「 WebPrj」→「 WebContent」 →「 WEB-INF」の順に開き、「 faces-config.xml」ファイル をダブルクリックします。 Oracle Workshop内に Faces Configurationエディタが開 き、ここでJSFコンポーネント、コンバータ、マネージドBean、ナビゲーション・ルール、参照Bean、レンダラ・キット、バリデータを設定できま す。 それでは、JSFページにバッキングBeanを作成して設定してみます。 「 Managed Beans」を右 クリックしてから、「 New Managed Bean…」をクリックします。 ダイアログ・ボックスが表示されたら、Nameに backingBeanと入力し(頭文字は小文 字)、Scopeはデフォルトの requestのままにして、「 New Bean」 ラジオ・ボタンを選択してから「 New」をクリックします。 New Java Classウィンドウで、Packageに webprj、 Nameに BackingBeanと入力し、 java.io.Serializableイ ンタフェースを追加してから、「 Finish」をクリックします。 Managed Bean Tagウィンドウに戻ったら、「 Next」 をクリックします。 「 Add」ボタンをクリックします。 Managed Property Tagウィンドウが開きます。 Nameに fromLang、 Classに Stringと入力したら、「 OK」をクリックします。 ここまでの2つのステップを繰り返して、 toLang、 source、 resultプ ロパティを追加します。 Managed Bean Tagに4つのプロパティが表示されたら、「 Finish」 をクリックします。 Oracle Workshopのウィザードにより、 faces-config.xmlファイルに <managed-bean>要 素が追加されます。次に、faces-config.xmlファイルのソース・コードを示します。 [ Ctrl]キー を押しながら[ S]を押して、 faces-config.xmlを保存します。 <?xml version="1.0" encoding="UTF-8"?> また、Oracle Workshopにより、 webprjパッケージ内に BackingBean.javaファ イルが作成されます。このファイルは、 Java Resources/srcフォルダにあります。 このファイルを開くと、 Faces Configurationエディタで定義した4つのBeanプロパティが含まれ ていることが確認できます。 translateAction()という名前のパブリック・メソッドを追加し、 translatedと いう文字列を返すように記述しておきます。 このメソッドは、あとで変更します。 [ Ctrl]キーを押しながら[ S] を押して、 BackingBean.javaファイルを保存します。次に、BackingBean.javaファイル のソース・コードを示します。 package webprj; JSFページの開発この項では、バッキングBean用のJSFフォームを作成する方法について学習します。その際、Oracle WorkshopのDesign Palette、Form Tagウィザード、Smart Editorを使用します。 また、Faces Configurationエディタを使用してナビゲーション・ルールを定義する方法を確認してから、AppXaminerを使用して依存関係を視覚的に 表示します。 JSFフォームの作成上述のとおり、Webプロジェクトの WebContent/pagesフォルダには、 welcome.jspペー ジが含まれます。 Project Explorerでこのファイルをダブルクリックします。 このWebページでは、リソース・バンドルからメッセージを表示するために <h:outputText>コ ンポーネントが使用されていることが分かります。 [ Ctrl]キーを押したまま、マウスで「 welcome.message」 を選択すると、この文字列がリンクに変わります。 このリンクをクリックすると、Oracle WorkshopのAppXRayにより、 application.propertiesファ イルが表示され、ここでメッセージを編集することができます。 このメッセージを This is a simple JSF applicationに変更し、ファイルを保存します。 welcome.jspに戻ると、 Designビューが変わっ ていることが分かります。 Design Paletteで「 JSF HTML」 タブを開き、「 Form」をドラッグして welcome.jspページの </body>ク ローズ・タグの直前にドロップします。 Form Tagウィザードが開きます。 Form Beanの 横にあるアイコンをクリックします。 Choose Bean / Propertyウィンドウで、「 backingBean」 を選択して「 OK」をクリックします。 Form Tagウィザードに戻ったら、 Form Actionフィー ルド横の2番目のアイコンをクリックします。 Choose Methodウィンドウで、 backingBeanの 「 translateAction()」メソッドを選択して「 OK」をクリックし ます。 Form Tagウィザードの「 Next」ボタンをクリックし ます。 backingBeanの「 result」プロパティのチェッ クを外し、「 Next」をクリックします。 次のスクリーンで、 fromLangフィールドと toLangフィー ルドの Input Typeを Menuに変更します。 次に、 Downボ タンを使用して sourceフィールドをリストの最後に移動し、 Input Typeを Text Areaに変更してから、「 Next」をクリックします。 Form Tagウィザードの最後のページが表示されたら、「 Finish」 ボタンをクリックします。 Oracle Workshopのウィザードにより、このフォームが welcome.jspページ に追加されます。 フォーム要素に対するスタイル・クラスの定義フォーム要素の外観をカスタマイズするには、CSSファイルを作成する必要があります。 WebPrjの 「 WebContent」フォルダを右クリックしてから、「 New」→「 Other」 の順にクリックします。「 Web」を開いて「 CSS」を選択してから、「 Next」 をクリックします。 File nameに style.cssと入力し、「 Finish」 をクリックします。 新しく作成されたファイルに次のスタイル・クラスを追加し、[ Ctrl]キーを押しながら[ S] を押して変更を保存します。 .TextAreaClass { background-color: #DDEEFF; border-width: thin; } welcome.jspページに戻ったら、 Design Paletteで 「 HTML」を開き、「 Import CSS File」をドラッグしてWeb ページの <head>要素内にドロップします。 Choose Fileウィンドウで「 style.css」 ファイルを選択し、「 OK」をクリックします。 Oracle Workshopにより、Webページ内に <link href="../style.css" rel="stylesheet" type="text/css"/>要素が挿入さ れます。 Smart Editorを使用したフォームの仕上げWebページで「 fromLang」コンポーネントを選択し、「 Properties」 →「 Smart Editor」の順にクリックします。下方向にスクロールして Items Propertiesを表示したら、 Static Itemsの横にあるアイコンをクリックしま す。 Edit Select Item Listウィンドウで、2~3の言語を追加して「 OK」 をクリックします。 ウィザードにより、 <h:selectOneMenu>内に <f:selectItem>コ ンポーネントが追加されています。 「 fromLang」をもう一度選択してから、 Smart Editorで「 Required」にチェックをつけます。 <h:selectOneMenu>タ グにrequired属性が追加されます。 同じ fromLangコンポーネントに対して、 Smart Editorの Style Classプロパティに SelectMenuClassと入力します。 toLangコンポーネントに対しても、先ほどのステップを繰り返します。 次に、 <h:inputTextarea>コ ンポーネントに required="true" rows="5" cols="40" styleClass="TextAreaClass"属性を追加します。 属性の変更を反映して、Oracle Workshopでページの表示が変わったことを確認します。 [ Ctrl]キーを押しながら[ S]を押して、 welcome.jspファ イルを保存します。次に、このファイルのソース・コードを示します。 <%@ page language="java" contentType="text/html;charset=UTF-8"%> <f:view> ナビゲーション・ルールの定義「 faces-config.xml」ファイルをダブルクリックして Faces Configurationエディタをアクティブにし、「 Navigation Rules」を右 クリックしてから「 New Navigation Rule…」をクリックします。 Navigation Rule Tagウィザードが開きます。 Source Pageフィールド横の1番目のアイコンをクリックします。 Choose Fileウィンドウで、「 welcome.jsp」 ページを選択して「 OK」をクリックします。 Navigation Rule Tagウィザードに戻ったら、「 OK」 をクリックします。 Faces Configurationエディタで、「 /pages/welcome.jsp」 ナビゲーション・ルールを右クリックしてから、「 New Navigation Case…」をクリックします。 Navigation Case Tagウィンドウで、Outcomeに translatedと 入力して、 Destination Pageフィールド横の2番目のアイコンをクリックします。 「 WebContent」フォルダを開いて「 pages」を選 択してから、File nameに result.jspと入力して「 Next」を クリックします。 「 New JSF JSP」を選択して、「 Next」をクリッ クします。 「 application」リソース・バンドルを選択し、「 Finish」 をクリックします。 Navigation Case Tagウィンドウに戻ったら、「 OK」 をクリックします。 Oracle Workshopのウィザードにより、 result.jspページが作成され、次の <navigation-rule>要 素が faces-config.xmlに挿入されます。 これにより、ユーザーが welcome.jspペー ジの Submitボタンをクリックすると、JSFフレームワークにより translateAction()が 起動し、結果として translatedが返されます。 次に、HTTPリクエストが result.jspに 転送されます。 <faces-config ...> 「 result.jsp」ページを開き、 backingBean.resultプ ロパティを表示するために <h:outputText>コンポーネントを追加します。 次の項では、EJBメソッドをコールして戻り値をバッキングBeanの resultプロパティに格納するように、 translateAction()を 変更します。 <%@ page language="java" contentType="text/html;charset=UTF-8"%> 「 File」→「 Save All」の順にクリックして編集済 みのファイルを保存したら、Oracle Workshop AppXaminerを使用して依存関係を視覚的に表示してみましょう。 AppXplorerで 「 welcome.jsp」ページを右クリックしてから、「 Show AppXRay Dependencies」をクリックします。 いずれかのノードをダブルクリックすると、Oracle Workshopにより選択されたファイルが開きます。 JSFページでのSession Beansの使用この項では、Session Beanを作成し、そのメソッドをJSFページからバッキングBeanを介して起動する方法について説明します。 その際、 @Remoteア ノテーション、 @Statelessアノテーション、および @EJBアノテーショ ンの使用法を学習します。 EJBプロジェクトの作成「 File」→「 New」→「 Project...」 の順にクリックします。 New Projectウィンドウで、「 EJB」ノー ドを開いて「 EJB Project」を選択します。 次に、「 Next」をク リックします。 Project nameに EjbPrjと入力し、Target Runtimeで Oracle WebLogic Server v10.3を選択したままにし、「 Default Configuration for Oracle WebLogic Server v10.3」を選択します。また、「 Add project to an EAR」チェックボックスにチェックをつけ、 EAR Project Nameが 表示されるコンボ・ボックスで「 EarPrj」を選択してから、「 Next」をク リックします。 次のスクリーンでは、オプションをデフォルトのままにして、「 Finish」をクリックします。 ステートレスSession Beanの作成Project Explorerで「 EjbPrj」を開き、 「 ejbModule」を右クリックして、コンテキスト・メニューから「 New」 →「 Interface」の順にクリックします。 Packageに ejbprjと入力し、Nameに Translatorと 入力してから、「 Finish」をクリックします。 Translator.javaファイルで、 javax.ejb.Remoteを インポートし、インタフェース宣言の直前に @Remoteアノテーションを追加し、次に示されているとおりに translate()メ ソッドを定義してから、ファイルを保存します。 package ejbprj; 「 ejbModule」をもう一度右クリックし、コンテキスト・メニューから「 New」 →「 Class」の順にクリックします。 Packageに ejbprjと入力し、Nameに TranslatorBeanと 入力し、Interfacesに「 ejbprj.Translator」を追加してから、「 Finish」 をクリックします。 TranslatorBean.javaファイルで、 javax.ejb.Statelessを インポートし、クラス宣言の直前に @Statelessアノテーションを追加し、次に示されているとおりに translate()メ ソッドを実装します。 package ejbprj; バッキングBeanを介したSession Beanとのやり取りWebプロジェクトの BackingBean.javaファイルをもう一度開き、 ejbprj.Translatorと javax.ejb.EJBを インポートし、プライベート・フィールド Translator trに @EJB(name="Translator")ア ノテーションをつけて定義し、 translateAction()メソッドに result = tr.translate(fromLang, toLang, source);を追加します。 package webprj; 「 File」→「 Save All」の順にクリックして、編集 したJavaファイルを保存します。 パッケージ化と配置この項では、Oracle Workshopを使用してEARファイルを作成する方法と、ローカルとリモートの両方の配置をおこなう方法について説明します。 通常、開発とテストの段階ではローカル配置を使用しますが、アプリケーションを本番配置する準備が整っている場合や、同僚またはクライアントにデモンスト レーションする必要がある場合は、リモート配置を使用します。また、別の担当者が配置を実行する場合、EARファイルを作成します。 ローカル配置WebPrjの WebContentフォルダで「 index.jsp」 ページを右クリックしてから、「 Run As」→「 Run on Server」 の順にクリックします。次に、Server's host nameを入力し、「 Oracle WebLogic Server 10.3」を選択して、「 Next」をクリックします。 Server Typeに Localが選択されていることを確認し、「 Domain Directory」を選択してから、「 Next」をクリックします。 「 Finish」をクリックして、プロジェクトを配置し、Webアプリケーションを開始します。 Oracle Workshopに組み込まれたWebブラウザで、アプリケーションが実行されます。 リモート配置アプリケーションをリモートのWebLogicサーバー上に配置する場合、 WebPrjの WebContentフォ ルダで「 index.jsp」ページを右クリックしてから、「 Run As」→「 Run on Server」の順にクリックします。次に、「 Manually define a new server」 を選択し、Server's host nameを入力し、「 Oracle WebLogic Server 10.3」 を選択して、「 Next」をクリックします。 Server Typeに「 Remote」を選択し、 Remote Host、 Port、 User、 および Passwordを入力してから、「 Next」→「 Finish」 の順にクリックします。 EARファイルのエクスポートアプリケーションを配布する場合、EARファイルを作成する必要がありますが、Oracle Workshopを使用すれば簡単に実行できます。 Project Explorerで「 EarPrj」 を右クリックし、「 Export」→「 EAR File with JSP pre-compilation」の順にクリックします。次に、DestinationにEARファイルの保存先を入力し、「 Finish」 をクリックします。 結論JSF標準とEJB標準が改善および簡素化されたことで、Java EE開発がはるかに簡単になったことがお分かりいただけたでしょうか。 Oracle Workshopに用意されている専用のウィザード、エディタ、コンポーネント・パレット、プロパティ・シートを使用すれば、アプリケーションの構築と構 成が短時間で実行できます。 また、Oracle Workshopが誇るAppXRayテクノロジーにより、ファイル間を素早く移動できるようになりました。さらに、コードを完成させ、検証してくれる機 能が提供されるため、ドキュメントを調べる必要が最小化され、開発とテストにかかる時間を大幅に短縮できます。 Andrei Cioroianuは Devsphereの 創立者で、Java EE開発とWeb 2.0/Ajaxのコンサルティング・サービスを提供しています。 1997年以来、JavaテクノロジーとWebテクノロジーの使用を続けており、複雑な技術課題の解決や、市販製品、カスタム・アプリケーション、オープ ンソース・フレームワークのフル・ライフ・サイクル管理に10年以上のプロフェッショナル経験を有しています。 Andreiへのお問い合わせは、 www.devsphere.comのお問い合わせフォームをご使用くだ さい。 |
||||||||||||||||||||||||||||||||||||||||||||||