このチュートリアルでは、Oracle Coherenceのデータ・キャッシング・システムを使用した、Oracle WebLogic Server向けのWebアプリケーションおよびエンタープライズ・アプリケーションを開発するために、Eclipseベースの開発環境を設定する方法に ついて説明します。
約1時間
このチュートリアルでは、以下のトピックについて説明します。
| 概要 | ||
| シナ リオ | ||
| 前提条 件 | ||
| 製品と環境の設定 | ||
| SimpleCacheServletのコーディング | ||
| Oracle WebLogic Serverへのデプロイとテスト | ||
| Coherenceノードの設定 | ||
| まとめ | ||
| 関連情 報 | ||
| 次のス テップ | ||
このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロードし、表示されます。
(警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)
注:各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあ る各アイコンの上にカーソルを置いてください。
このチュートリアルでは、Javaエンタープライズ(Web)アプリケーションの作成に必要な設定について説明 します。Eclipseを使用して開発されるこのアプリケーションはOracle Coherenceを使用しており、Oracle WebLogic Server上で実行されます。
Oracle Coherenceは、Oracle Fusion Middlewareのコンポーネントの1つあり、頻繁に使用されるデータに対して信頼性の高い高速アクセスを提供することで、ミッションクリティカルな アプリケーションの計画的な拡張を実現します。 Oracle Coherenceを使用すると、メモリ内のデータが複数のサーバーをまたがって自動的かつ動的にパーティション化されるため、サーバーの障害時にもデー タの可用性とトランザクションの整合性が維持されます。 共有インフラストラクチャであるOracle Coherenceは、ローカル保持したデータとローカル処理能力を組み合わせることにより、リアルタイムのデータ分析、インメモリ・グリッド計算、トラ ンザクションおよびイベントの並列処理などを実現します。 Oracle Coherenceには、 Javaエディション、C++エディション、.NETエディションの3つのエディションがありますが、 このチュートリアルでは、Javaエディションを対象としています。
Oracle WebLogic Server 10gは、エンタープライズ・アプリケー ションとサービスを構築および実行するためのアプリケーション・サーバーとして、世界最高レベルを誇ります。 最新のJava EE標準を完全実装したOracle WebLogic Server 10gでは、開発フレームワークと必要ツールにさまざまな選択肢が提供されています。 管理機能は包括的で使いやすいため、優れた設計を持つグラフィカル・コンソールや自動化を介して、高度なシステムの管理が実行できます。 Oracle WebLogic Serverの信頼性とパフォーマンスは、要求の厳しい世界各地の顧客環境において、エンタープライズ・レベルの本番使用を通じて長年テストされており、 あらゆるユーザーにメリットをもたらしています。
このチュートリアルの各ステップでは、製品の前提条件から始めて、Oracle Coherenceを使用するWebアプリケーションのコーディング、デプロイ、テストに必要とされる基本的設定までを説明します。
Oracle WebLogic Server上で実行されるアプリケーションでOracle Coherenceを使用するには、以下の2種類の方法があります。
このOracle by Example(OBE)では、基本的な設定と最初の方法に対する概要レベルの例を取り上げます。 アプリケーションまたはアプリケーション・サーバーのクラスパスに.jarファイル(Java ライブラリ)を追加し、数行のコードを追加するだけで、フォルト・トレラントかつスケーラブルな方法で別のアプリケーションからアクセスできるように、ア プリケーションでのキャッシングを有効にすることができます。この際、リレーショナル・データベースや永続性(JPA、EJB、Hibernateな ど)、またはObject Relationship Management(ORM)機能を支えるインフラストラクチャは必要なく、余分なオーバーヘッドもかかりません。 その代わりに、WebLogic Server上のサーブレットやJSPから処理できるシンプルなPlain Old Java Object(POJO)を使用します。
このチュートリアルで使用するすべてのソフトウェアは、無償でダウンロードできます。 このチュートリアルの開発にはMicrosoft Windows XP SP2が使用されましたが、オペレーティング・システムの違いに関する十分な知識がある場合、手順を変更してLinuxで作業することもできます。
このチュートリアルを始める前に次のことを確認してください。
| 1. |
次のソフトウェアにアクセスできるか、インストール済みであること。
上記に加えて、Oracle Enterprise Pack for Eclipse(OEPE)が必要になります。プラグインと拡張モジュールの無償セットであるOracle Enterprise Pack for Eclipseを利用すると、Oracle WebLogic Serverを使用した開発とデプロイが簡単かつ円滑に実行できます。 Oracle Enterprise Pack for EclipseはEclipseのソフトウェア更新機能を使用してインストールできますが、このチュートリアルの"Oracle Enterprise Pack for Eclipseのインストール"のセクションで詳しい方法が説明されています。 Oracle WebLogic ServerとともにインストールされるJava 1.6 JDKは、サーバーおよびその他の製品を実行するために必要です。 製品をインストールした後で、システム・パスの環境設定を適切に行い、WebLogic提供のJDKが使用されるようにしてください。 製品のインストール場所には任意の場所を選択できますが、このチュートリアルではそれぞれに対して 以下の汎用ラベルが使用されています。
|
| 2. |
次のドキュメントを参照すること。
|
| 3. |
参照用にチュー トリアルのソース・コードをダウンロードすること。
|
このセクションでは、以下の作業が完了していることを前提としています。
ここでは、WebLogic Serverドメインを作成し、基本的なEclipseワークスペースを選択し、Oracle Enterprise Pack for Eclipseをインストールします。
| WebLogic Serverドメインの作成 | ||
| Eclipseのワークスペース・ロ ケーションの選択 | ||
| Oracle Enterprise Pack for Eclipseのインストール | ||
|
1. |
次のドキュメント『コンフィグレーション ウィザードを使用した WebLogicドメインの作成』を参照します。 http://otndnld.oracle.co.jp/document/products/common/docs103/confgwiz/index.html
|
|
2. |
「スタート」→「すべてのプログラム」→「Oracle WebLogic」→「WebLogic Server 10gR3」→「Tools」→「Configuration Wizard」の順に選択して、 WebLogic Domain Configuration Wizardを起動します。
|
| 3. |
「Create a new WebLogic Server domain」オプションを選択し て、「Next」をクリックします。
|
| 4. |
WebLogic Serverをベースとするドメインを作成します (デフォルト)。 「Next」 をクリックします。
|
| 5. |
ログインに使用する資格証明を入力します。 ユーザー名とパスワードにweblogicと 入力します。
|
| 6. |
デフォルトのまま、Development ModeおよびJDK(Sun SDK 1.6)が選択された状態で「Next」をクリックします。
|
| 7. |
その他の変更については「No」を選択し、 「Next」をク リックします。
|
| 8. |
ドメイン名にWLS_Aと 入力します。ドメイン・ロケーションを選択したら、「Create」をクリックしてドメインを作成します。
|
| 9. |
完了したら、Start Admin Serverが選択されていないことを確認し、「Done」 をクリックします。
|
| 1. |
Eclipseを起動します。
|
| 2. |
Eclipse Workspace Launcherが表示されます。 ワークスペースの場所を選択します (例:D:\oracle\tutorial。 以降、この場所を$WORKSPACEと 呼びます)。 「OK」をクリックします。
|
| 1. |
Eclipseワークスペースを開いた状態で、Welcome画面を終了します。
|
| 2. |
Eclipseのソフトウェア更新機能にアクセスします。 Helpメニューから「Software Updates」を選択します。
|
| 3. |
「Available Software」タブをクリックし、「Add Site」 をクリックします。
|
| 4. |
URLとしてhttp://download.oracle.com/otn_software/oepe/ganymedeを 入力します。 「OK」をクリックします。
注:Oracle Enterprise Pack for Eclipseについて詳しくは、こちらを参照してください。
|
| 5. |
新しく追加されたサイトを開き、「Oracle Enterprise Pack for Eclipse」 のチェック・ボックスを選択します。 すべてのサブコンポーネントが選択されていることを確認し、「Install」 をクリックします。
|
| 6. |
Install画面で「Next」をクリックします。
|
| 7. |
Review Licenses画面でライセンス条件を受け入れ、「Finish」 をクリックします。
|
| 8. |
インストールが終わると、プロセスを完了するためのダイアログ・ボックスが表示されます。 「Yes」 をクリックして、Eclipseを再起動します。 プロンプトが表示されたら、チュートリアル用のワークスペースをもう一度開きます。
|
| 新規プロジェクトの作成 | ||
| プロジェクトへのCoherenceライブラリの追加 | ||
| サーバー構成の追加 | ||
| 1. | 「File」→「New」
→「Dynamic Web Project」の順に選択します。
|
| 2. |
プロジェクト名としてSimpleCacheAppと 入力したら、Target Runtimeの横にある「New」ボタンをクリックします。
|
| 3. |
タイプとして「Oracle」→「Oracle WebLogic Server 10gR3」を選択し、「Next」をクリックします。
|
| 4. |
WebLogic Server Home($MIDDLEWARE_HOME\wlserver_10.3) を選択し、「Finish」をクリックします。
|
| 5. |
Dynamic Runtime Module versionが自動的に2.5に更新され、ConfigurationにはDefault Configuration for Oracle WebLogic Server 10gR3が設定されます。 この画面で構成を追加する必要はありません。 「Finish」をクリックします。
|
| 1. |
Project Explorerで「SimpleCacheApp」を右クリックし、「Properties」 を選択します。
|
| 2. |
「Java Build Path」カテゴリを選択し、「Libraries」 タブをクリックします。 「Add Library」をクリックします。
|
| 3. |
「User Library」を選択し、「Next」をクリッ クします。
|
| 4. |
「User Libraries」ボタンをクリックします。
User Librariesで「New」ボタンをクリックし ます。
|
| 5. |
ライブラリ名としてCoherenceと 入力したら、「OK」をクリックします。
|
| 6. |
「Add JARs」ボタンをクリックします。
$COHERENCE_HOME/libフォルダを参照します。 「coherence.jar」ファイルを選択し、「Open」 をクリックします。
|
| 7. |
「OK」→「Finish」の順にクリックし、もう一度「OK」 をクリックします。 Coherenceライブラリがプロジェクトに追加されました。
|
| 8. |
Coherenceライブラリを追加するには、次の方法があります。
$COHERENCE_HOME/libフォ ルダから$DOMAIN_HOME/WLS_A/libフォルダへ、coherence.jarファイルをコピーします。 注:ドメインのlibフォ ルダに追加されたJARファイルは、自動的にドメインのクラスパスに追加されるため、ドメイン内にデプロイされたすべてのアプリケーションからアクセスで きます。
|
| 1. |
Eclipseウィンドウの下部にある「Servers」ビューを選択します。 ビューの内側を右クリックし、「New」→「Server」の順に選択します。
|
| 2. |
サーバーのホスト名(localhost)、サーバー・タイプ(Oracle WebLogic Server 10gR3)、およびサーバーのランタイムについてデフォルトを受け入れます。 サー バー名をOracle WebLogic Server Aに変更します。 「Next」をクリックします。
|
| 3. |
再度、名前をOracle WebLogic Server Aに変更し、 先ほど作成したドメイン・ディレクトリ($DOMAIN_HOME/WLS_A)を参照しま す。 「Finish」をクリックします。
|
| 4. |
$DOMAIN_HOME/WLS_AディレクトリにあるstartWebLogic.cmdスクリプトを使用して、ドメインを開始します。 サーバーが稼働中であることを確認します。 Eclipseウィンドウのサーバー・ステータスにはStartedが表示されます。
|
|
Oracle WebLogic ServerにプロジェクトをデプロイするためのEclipseの設定は完了しました。 後続の手順では、サーバー構成にプロジェクトを追加すると、Oracle Enterprise Pack for Eclipseによってデプロイが実行されます。
|
ここでは、Coherenceキャッシュ・サーバーに接続し、 データを交換するシンプルなHttpServletを作成します。 このコードは、Oracle Coherenceに対するアプリケーション・レベルのインタラクション例を示すものです。
| サーブレットのコーディング | ||
Coherenceを使用するシンプルなHttpServletを作成するには、以下の手順を実行します。
| 1. |
Project Explorerで、「SimpleCacheApp」を開きます。 「Java Resources」ノードを右クリックして、「New」→「Servlet」 の順に選択します。
|
| 2. |
パッケージにobe.coherenceを指定し、クラス名としてSimpleCacheTest1を入力します。 「Next」 をクリックします。
|
| 3. |
Initialization ParametersとURL Mappingsのデフォルト値を受け入れ、「Next」 をクリックします。
|
| 4. |
「doPost」の選択を解除したら、残りすべてのデフォルト値を受け入れて、 「Finish」 をクリックします。
|
| 5. |
以下を実行するdoGet()メソッドをコーディングします。
|
| 6. |
次のコードを使用して、Coherenceキャッシュに接続します。 CacheFactory.ensureCluster(); コードを追加すると、はじめはCacheFactoryに赤い下線が表示さ れます。これは、CacheFactoryクラスをインポートする必要があるためです。 クラスパスに含まれるCacheFactoryは1つだけであるため(coherence.jarから生成されたcom.tangosol.net.CacheFactory)、インポートは自動的に実行されます。 また、CacheFactory宣言の後に"."と入力すると、Eclipseのコード補完ボックスが開き、このクラスで使用できるすべてのメソッド が表示されます。
|
| 7. |
CacheFactoryを使用して、mycacheという名前のキャッシュに接続します。 NamedCache cache = CacheFactory.getCache("mycache");
NamedCacheには複数の候補があるため、今回は自動的にインポートされません。 左の余白に表示された赤色の ×印をクリックし、「Import ‘NamedCache’ (com.tangosol.net)」 を選択します。 このインポート文が、ソース・コードの最上部に追加されます。
|
| 8. |
"greeting"というキーを使用してキャッシュから値を取得し、Stringとして保管します。 String cachedValue = (String) cache.get("greeting");
注:キャッシュ対象のオブジェクトはシリアライズ可能なオブジェクトでなければなりません。 Stringは、シリアライズ可能なオブジェクトとして自動的に実装されます。
|
| 9. |
次のコードを使用して、サーバー・コンソールとブラウザにこの値を出力します。 // Output this value to the server console ステップ7以降の手順を繰り返し、必要なクラスをすべてインポートします。
|
| 10. |
コードを保存します。
|
ここまででコードが完成したため、WebLogic Serverドメインにコードをデプロイして、テストを実行します。
サーブレットまたはCoherenceコードをテストするには、以下の手順に従います。
| 1. |
コードにエラーが含まれていないことを確認します (ソース・ビューの余白に表示される赤い印を確認します)。
|
| 2. |
あらかじめ起動されている場合を除いて、Coherenceキャッシュ・サーバー・インスタンス、Coherenceシェル・クライア ント・インスタンス、WebLogic Serverドメインを起動します。 起動時にエラーが発生していないことを確認します。 Coherenceキャッシュ・サーバーを起動するには、$COHERENCE_HOME/bin/cache-server.cmdを 実行します。. Coherenceシェル・クライアントを起動するには、$COHERENCE_HOME/bin/coherence.cmdを 実行します。. WebLogic Serverドメインを起動するには、$DOMAIN_HOME/WLS_A/startWebLogic.cmdを 実行します。.
|
| 3. |
Coherenceシェル・クライアントから"mycache"キャッ シュに接続します。 Map (?): cache mycache このキャッシュのXMLスキーマがクライアントに表示されます。 また、Coherence Shellウィンドウには、短時間に多数のアクティビティが表示されます。
|
| 4. |
キャッシュに値を入力します。 Coherenceシェル・クライアントを使用し、greeting というキーと helloという値を入力して値を作成します。 Map (mycache): put greeting hello クライアントには、応答としてnullが返されます。
|
| 5. |
WebLogic Serverにプロジェクトをデプロイします。 EclipseのServersビュー で「Oracle WebLogic Server」エントリを右クリックし、「Add and Remove Projects」を選択します。
|
| 6. |
Configured projectsへSimpleCacheAppを 追加し、「Finish」をクリックします。
Eclipseによって、WebLogic Serverにアプリケーションがデプロイされます。 サーバー・エントリのステータスが"Synchronized"になっており、WebLogic Serverコンソール・ウィンドウにエラーが表示されていないことを確認します。
|
| 7. |
Project Explorerで「SimpleCacheTest1」(SimpleCacheApp\Java Resources\src\obe.coherenceの 下)を右クリックし、「Run As」→「Run on Server」の順に選 択します。
|
| 8. |
Run On Serverダイアログで「Finish」をクリックします。
サーブレットがロードされ、アクセス用のEclipseテスト・ブラウザが起動される間に、doGet()メ ソッドがコールされ、サーブレットがCoherenceキャッシュに接続します(Coherence関連情報がWebLogic Serverウィンドウに表示され、Coherenceキャッシュ・サーバー・ウィンドウにアクティビティが表示されます)。 WebLogic ServerウィンドウとEclipseテスト・ブラウザの両方に、Coherenceシェル・クライアントから入力した値が表示されることを確認しま す。
|
| 9. |
Coherenceクライアント・シェルを使用して値を変更します。 put greeting howdy
Eclipseテスト・ブラウザの「Refresh」アイコンをクリックしてサーブレットを再実行 します。 更新された値がすぐにテスト・ブラウザに表示されます。
|
| 10. |
オプション課題:もとの値を取得して表示した後で、greetingに対する値を変更するように サーブレットを更新します。 どのようにこれを実現すれば良いでしょうか(ヒント:Coherenceクライアントで使用するコ マンドは何でしょうか。 NamedCacheオブジェクトで使用できるメソッドに、これと似たものはないでしょうか)。 変更を行った後で、Eclipseのサーバー・エントリ・ステータスがRepublishに変わることに注意してください。 これは、コードとデプロイ済みアプリケーション間で同期が取れておらず、アプリケーションの最新バージョンがサーバー上で実行されていないことを意味しま す。
サーバー・エントリを右クリックし、再度「Publish」を選択します。
ステータスがSynchronizedに変わったら、Coherenceクライアントを使用してキャッシュに値が含まれることを確認し (greetingの値をhelloに戻します)、Eclipseテスト・ブラウザを使用して サーブレットの再テストを行います。 前回と同じように、クライアントで設定した値がブラウザとWebLogic Serverウィンドウに表示されます。 クライアントを使用して、キャッシュ内に現在含まれる値を確認します。 Map (mycache): list 先ほどサーブレット・コードに追加したcache.put()と同じ値が返 されることを確認します。 次に、Eclipseテスト・ブラウザをリフレッシュします。 どのような値が表示されていますか。 この課題の解答となるコードを参照するには、こちらを参照してください。
|
Oracle Coherenceではpeer-to-peerアーキテクチャが使用されているため、マスターやスレーブは存在しません。 デフォルトでは、ノードがCoherenceグリッドに接続されると、このノードは単なるクライアントやコンシューマではなくキャッシュ・サーバーとして グリッドに加わります。 このシナリオには長所と短所があります。長所は、キャッシュ内のデータ(特にレプリケートされたモデルにおいて)がアプリケーション・サーバーにとって" ローカル"データであるため、レプリケートされたデータをアプリケーションから取得する際にネットワーク・トラフィックが発生しない点です。 また短所は、プロセスが追加されることでアプリケーション・サーバーのJVMとハードウェアに望ましくないメモリのオーバーヘッドが生じる可能性がある点 です。
ノードの"local-storage"を"false"に設定すると、ノードは単純にコンシューマ(クライア ント)になります。 この設定は、Coherenceノードに対してコマンドライン引数を渡すことで実行できます。 ただし、アプリケーションを実行するノードがJavaアプリケーション・サーバーである場合、WebLogic Serverの起動時に渡されるJavaパラメータに対して、必要な引数Dtangosol.coherence.distributed.localstorage=falseを 追加する必要があります。
WebLogic Serverドメインの開始スクリプトの詳細
ドメイン・ディレクトリ($DOMAIN_HOME/WLS_A) をよく見ると、startWebLogic.cmdスクリプトが2つ存在することに気づくでしょう。 1つはドメインのルート・フォルダにあり、もう1つはbinフォルダに含まれます。 これらのスクリプトがそれぞれどのように動作するかについて、以下に説明します。
|
スクリプト
|
説明
|
|---|---|
|
DOMAIN_HOME/startWebLogic.cmd
|
binフォルダのstartWebLogic.cmdを
呼び出すための便宜的なスクリプト。
|
|
DOMAIN_HOME/bin/startWebLogic.cmd
|
setDomainEnv.cmdを呼び出してWebLogic
Server環境を設定し、実際にサーバーを起動するスクリプト。
|
|
DOMAIN_HOME/bin/setDomainEnv.cmd
|
このドメインのWebLogic Serverを起動するための環境設定を行うスクリプト。
このスクリプトはDOMAIN_HOME/bin/startWebLogic.cmdから呼
び出されます。 このファイルのJavaプロパティを介して、Coherence構成引数を設定できま
す。
|
WebLogic Serverが生成したCoherenceノードの設定を行うには、以下の手順を実行します。
| 1. |
テキスト・エディタで$DOMAIN_HOME/WLS_A/bin/setDomainEnv.cmdを 開きます。 setDomainEnv.cmdファ イルの中で、次のような行を探します(258行目辺り)。 set JAVA_PROPERTIES=%JAVA_PROPERTIES% %WLP_JAVA_PROPERTIES%
|
| 2. |
この行の上に、次の行を追加します。 @REM ADDING COHERENCE SETTINGS
|
| 3. |
ステップ1で見つけたJAVA_PROPERTIESの行を変更して、上で 作成した新しい環境変数を追加します。 set JAVA_PROPERTIES=%COHERENCE_PROPERTIES% %JAVA_PROPERTIES% %WLP_JAVA_PROPERTIES%
|
| 4. |
WebLogic Serverドメインを起動(または再起動)し、Coherenceキャッ シュ・サーバーおよびCoherenceシェル・クライアントの実行中インスタンスがあれば、それらを停止します。 テスト・アプリケーションを再デプロイし、前項と同様にサーブレットのテストを行います。 今回は、どのような結果になりましたか。 Coherenceキャッシュ・サーバーが停止されている場合、"storage not configured"という例外が表示されてテストは失敗します。 これは、WebLogic Serverドメインをクライアント・ノードとしてのみ動作するよう設定したため、アプリケーションに対してキャッシュ・サービスを提供できないことに起 因したエラーです。
|
| 5. |
Coherenceキャッシュ・サーバーとCoherenceクライアント・シェルを再起動し、前項と同様にアプリケーションをテスト します (はじめにCoherenceシェル・クライアントを使用して値を追加することに注意してください)。 今回はうまくいきましたか。 コマンドライン引数を介して設定できるCoherence構成には、その他にもキャッシュ構成の上書きなどがあります。
|
このレッスンで学習した内容は次のとおりです。
| Oracle Coherenceを使用したアプリケーションをホストするドメインを作成し、設定を行いました。 | ||
| Oracle Coherenceを使用するアプリケーションを作成し、Oracle WebLogic Serverへデプロイできるように、Eclipse開発環境を設定しました。 | ||
| Webアプリケーション・プロジェクトを作成し、Oracle Coherenceデータ・キャッシュに接続してデータを共有するサーブレットのコーディングを行いました。 | ||
| CoherenceアプリケーションをEclipseからOracle WebLogic Serverへデプロイし、テストを行いました。 | ||
| アプリケーション・サーバー・ノードからCoherenceノードの設 定を行いました。 | ||
Oracle Coherenceについての詳細は、下記のWebサイトを参照してください。
| Oracle Coherence(OTN) | ||
| Oracle Coherence 3.4xドキュメント | ||
| Oracle Coherence Knowledge Base Dashboard | ||
| Oracle Coherence Incubator | ||
| Oracle Coherence OBE(OTN) | ||
このチュートリアルでは、Javaアプリケーション・サーバーで実行されるWebアプリケーションまたはエン タープライズ・アプリケーションにおいて、アプリケーション・レベルのコンテキストに対してCoherenceを使用するために必要となる基本的な環境設 定について学習しました。 Oracle Coherenceドキュメントに記載されているCoherenceチュートリアルを参照し、 このチュートリアルで学習した内容を利用して、実際にWebアプリケーションで試してみることをお勧めします。
このアイコンの上にカーソルを置くと、すべてのスクリーンショットが
非表示になります。