2 最初のCoherenceアプリケーションの作成

ステップを追って基本的なCoherenceの例の構築と実行を説明し、多くの重要なCoherenceの概念を示します。
サンプル・アプリケーションは、簡単なHello Worldアプリケーションであり、スタンドアロンのJavaアプリケーションおよびJSPアプリケーションとして実装されます。最後のJDeveloperに関する項には、Coherenceによる開発時にJDeveloperをセットアップするためのいくつかの基本手順が記載されています。

ノート:

この章のサンプルは、基本的なものであり、一般的な概念を説明することのみを目的としています。詳細な例は、インストールに同梱されている例を参照してください。例は、Coherenceのサプリメンタル・インストールの一部としても配布されています。Oracle CoherenceのインストールCoherenceの例の実行を参照してください。

この章の内容は次のとおりです。

タスク1: サンプル・キャッシュの定義

キャッシュは、キャッシュ構成デプロイメント・ディスクリプタ内に定義されており、アプリケーション内で名前によって参照されます。キャッシュ構成ファイルを使用すると、アプリケーションのコードを変更することなくキャッシュに変更を加えることができます。次のキャッシュ構成では、キャッシュ名hello-exampleにマップされた基本的な分散キャッシュを定義しています。

キャッシュのサンプルを定義するには:

  1. example-config.xmlという名前のXMLファイルを作成します。
  2. 次の分散キャッシュの定義をファイルにコピーします。
    <?xml version="1.0"?>
    
    <cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
       xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config
       coherence-cache-config.xsd">
       <caching-scheme-mapping>
          <cache-mapping>
             <cache-name>hello-example</cache-name>
             <scheme-name>distributed</scheme-name>
          </cache-mapping>
       </caching-scheme-mapping>
       
       <caching-schemes>
          <distributed-scheme>
             <scheme-name>distributed</scheme-name>
             <service-name>DistributedCache</service-name>
             <backing-map-scheme>
                <local-scheme/>
             </backing-map-scheme>
             <autostart>true</autostart>
          </distributed-scheme>
       </caching-schemes>
    </cache-config>
    
  3. ファイルを保存して閉じます。

タスク2: サンプル・クラスタの構成と起動

キャッシュはCoherenceクラスタ上にホストされます。Coherenceを実行するJVMプロセスはすべて、実行時に自動的にクラスタに参加し、クラスタによって提供されるキャッシュおよびその他のサービスにアクセス可能になります。JVMがクラスタに参加すると、クラスタ・ノード、またはクラスタ・メンバーと呼ばれます。この章のサンプル・アプリケーションでは、キャッシュ・サーバー・プロセスとHello Worldアプリケーション・プロセスの2つの個別のJavaプロセスによってクラスタが形成されます。簡素化を図るため、この2つのプロセスは単一のマシン上に置かれます。この2つのプロセスは1つのコンピュータ上に共存します。キャッシュ・サーバーは、デフォルトでキャッシュ・データを格納するように構成されます。

サンプルのクラスタでは、オペレーション・オーバーライド・ファイルを使用して初期状態のデフォルト・クラスタ構成を修正します。具体的には、デフォルト構成を修正してプライベート・クラスタを作成し、ネットワーク上で実行されている可能性のある既存のCoherenceクラスタに2つのプロセスが参加しないようにします。また、デフォルト構成を修正して、デフォルトのキャッシュ構成ファイルのかわりにexample-config.xmlがロードされるようにします。

サンプルのクラスタを構成して起動するには:

  1. tangosol-coherence-override.xmlという名前のファイルを作成します。
  2. 次のオーバーライド構成を追加して、cluster_nameおよびaddressを、このクラスタ内で一意の値に置き換えます。たとえば、クラスタ名に自分の名前を使用し、224.0.0.0と239.255.255.255の間の個別のIPアドレスを使用します。
    <?xml version='1.0'?>
     
    <coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
       xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-config
       coherence-operational-config.xsd">
       <cluster-config>
          <member-identity>
             <cluster-name>cluster_name</cluster-name>
          </member-identity>
          <multicast-listener>
             <address>address</address>
             <time-to-live>0</time-to-live>
          </multicast-listener>
       </cluster-config>
      
       <configurable-cache-factory-config>
          <init-params>
             <init-param>
                <param-type>java.lang.String</param-type>
                <param-value system-property="coherence.cacheconfig">
                   example-config.xml</param-value>
             </init-param>
          </init-params>
       </configurable-cache-factory-config>
    </coherence>
    
  3. example-config.xmlファイルが保存されているディレクトリにファイルを保存します。
  4. コマンド・プロンプトから、DefaultCacheServerクラスを使用してキャッシュ・サーバー・インスタンスを起動し、coherence.jarライブラリおよび構成ファイルの場所をJavaの -cpオプションで指定します。たとえば:
    java -cp COHERENCE_HOME\config;COHERENCE_HOME\lib\coherence.jar com.tangosol.net.DefaultCacheServer
    

タスク3: 基本のCoherenceスタンドアロン・アプリケーションの作成と実行

タスク3は、サンプルのHello Worldアプリケーションの作成と、このサンプルを実行して検証するためのステップを含む、マルチパートのステップです。アプリケーションはコマンドラインから実行され、キャッシュ・サーバーと結合するキャッシュ・ノードを起動します。そして、キーk1と値Hello World!hello-exampleキャッシュに入れます。キー値の取得と出力が済むとアプリケーションが終了します。最後に、追加のクラスタ・ノードが起動され、キーがキャッシュ内にあることが確認されます。

この項には次のトピックが含まれます:

サンプル・スタンドアロン・アプリケーションの作成

アプリケーションは、Coherence APIを使用してキャッシュにアクセスし、キャッシュとの相互作用を図ります。CoherenceSessionクラスは、デフォルトのセッション・プロバイダを使用してSessionインスタンスを作成し、getCacheメソッドを使用してNamedCacheインスタンスへの参照を取得します。このNamedCacheインスタンスを使用して、キャッシュ内のオブジェクトを取得および格納します。Hello Worldアプリケーションは非常に基本的なものですが、SessionおよびNamedCache APIを使用するデモとなっています。

例2-1 サンプルのHelloWorldスタンドアロン・アプリケーション

package com.examples;

import com.tangosol.net.CoherenceSession;
import com.tangosol.net.NamedCache;
import com.tangosol.net.Session;

public class HelloWorld {
   public static void main(String[] args) throws Exception {

      String key = "k1";
      String value = "Hello World!";
        
      Session session = new CoherenceSession();
      NamedCache<Object, Object> cache = session.getCache("hello-example");
        
      cache.put(key, value);
      System.out.println(cache.get(key));
      session.close();

   }
}

サンプル・スタンドアロン・アプリケーションの実行

サンプルのスタンドアロン・アプリケーションを実行するには:

  1. コマンド・プロンプトからHello Worldアプリケーションをコンパイルします。たとえば:
    javac -cp COHERENCE_HOME\lib\coherence.jar com\examples\HelloWorld.java
    
  2. Hello Worldアプリケーションを実行します。Javaの-cpオプションを使用して、coherence.jarライブラリの場所と構成ファイルを指定します。また、coherence.distributed.localstorageプロパティをfalseに設定して、クライアントがパーティション化されたデータをローカルに保存しないように制限します。たとえば:
    java -cp COHERENCE_HOME\config;COHERENCE_HOME\lib\coherence.jar -Dcoherence.distributed.localstorage=false com.examples.HelloWorld
    

    Hello Worldアプリケーションが起動します。キャッシュ・ファクトリ・インスタンスが作成され、クラスタのメンバーになります。値Hello World!を持つキーk1hello-exampleキャッシュにロードされます。次に、このキーがキャッシュから取得され、その値が出力の一部に含まれます。最後に、キャッシュ・ファクトリがシャットダウンされてクラスタを離脱すると、Hello Worldアプリケーションが終了します。

サンプル・キャッシュの確認

この例のキャッシュ・サーバーは、デフォルトでキャッシュのデータを格納するように構成されます。データは、クラスタのすべてのメンバーが使用可能であり、それらのメンバーがクラスタから離脱した後も保持されます。たとえば、Hello Worldアプリケーションは、キャッシュにキーをロードし、そのキーを表示してから終了します。ただし、キャッシュとキーは、その後もすべてのクラスタ・メンバーが使用できます。

このステップでは、接続ファクトリ・コマンド行ツールを使用して、hello-exampleキャッシュに接続し、キャッシュ内のすべての項目を一覧表示します。ここでは、Coherenceのキャッシュが永続性と分散性の両方の性質を持っていることを示します。

キャッシュを確認するには:

  1. コマンド・プロンプトから、CacheFactoryクラスを使用してスタンドアロンのキャッシュ・ファクトリ・インスタンスを起動し、coherence.jarライブラリおよび構成ファイルの場所を、Java -cpオプションを使用して指定します。たとえば:
    java -cp COHERENCE_HOME\config;COHERENCE_HOME\lib\coherence.jar -Dcoherence.distributed.localstorage=false com.tangosol.net.CacheFactory
    

    キャッシュ・ファクトリ・インスタンスが起動し、クラスタのメンバーとなり、コマンド行ツールのコマンド・プロンプトを返します。

  2. コマンド行ツールのコマンド・プロンプトで、cacheコマンドを使用してhello-exampleキャッシュを取得します。
    cache hello-example
    
  3. コマンド行ツールのコマンド・プロンプトで、listコマンドを使用してキャッシュの内容を取得します。
    list
    

    コマンドは次の文字列を返し、表示します。

    k1 = Hello World!
    

タスク4: 基本のCoherence JavaEE Webアプリケーションの作成と実行

タスク4は、Hello WorldアプリケーションをJSPページとして再実装するマルチパートのステップです。
サンプルをJavaEEサーバーにデプロイされるWebアプリケーションとしてパッケージ化する手順も含まれています。アプリケーションはアプリケーション・サーバー上で実行され、キャッシュ・サーバーに参加するキャッシュ・ノードを起動します。キーk2と値Hello World!hello-exampleキャッシュに入れられ、キーの値が取得および出力されてからアプリケーションが終了します。最後に、追加のクラスタ・ノードが起動され、キーがキャッシュ内にあることが確認されます。

ノート:

WebLogic Serverには、Coherenceアプリケーションのパッケージ化およびデプロイを標準化するCoherence統合が用意されています。Oracle Coherenceの管理CoherenceアプリケーションのWebLogic Serverへのデプロイを参照してください。この項の手順は、WebLogic Server固有のもの(WebLogic Serverに推奨される手順)ではありません。

この項には次のトピックが含まれます:

Webスタンドアロン・アプリケーションの作成

サンプルのWebアプリケーションを作成するには:

  1. 次のように基本のWebアプリケーション・ディレクトリ構造を作成します。
    /
    /WEB-INF
    /WEB-INF/classes
    /WEB-INF/lib
    
  2. 次のJSPをテキスト・ファイルにコピーして、hello.jspという名前でWebアプリケーション・ディレクトリのルートに保存します。
    <html>
       <head>
          <title>My First Coherence Cache</title>
       </head>
       <body>
          <h1>
                   <%@ page language="java"
                            import="com.tangosol.net.CoherenceSession,
                                    com.tangosol.net.NamedCache,
                                    com.tangosol.net.Session"
                   %>
                   <%
                      String key = "k2";
                      String value = "Hello World!";
          
                      Session coh_session = new CoherenceSession();
                      NamedCache <Object, Object> cache = coh_session.getCache("hello-example");
          
                      cache.put(key, value);
                      out.println((String)cache.get(key));
                      coh_session.close();
          
                   %>
          </h1>
       </body>
    </html>
  3. 次の空のWebアプリケーション・デプロイメント・ディスクリプタをテキスト・ファイルにコピーして、web.xmlという名前で/WEB-INFディレクトリに保存します。
    <?xml version = '1.0' ?>
       <web-app/>
    
  4. coherence.jarファイルをWEB-INF/libディレクトリにコピーします。
  5. example-config.xmlファイルとtangosol-coherence-override.xmlファイルをWEB-INF/classesディレクトリにコピーします。
  6. jarユーティリティを使用してWeb ARchive (WAR)ファイルを作成し、hello.warという名前で保存します。たとえば、Webアプリケーション・ディレクトリのルートでコマンド・プロンプトから次のコマンドを発行します。
    jar -cvf hello.war *
    

    アーカイブには次のファイルが含まれます。

    /hello.jsp
    /WEB-INF/web.xml
    /WEB-INF/classes/example-config.xml
    /WEB-INF/classes/tangosol-coherence-override.xml
    /WEB-INF/lib/coherence.jar

サンプルのWebアプリケーションのデプロイと実行

サンプルのWebアプリケーションをデプロイおよび実行するには:

  1. hello.warファイルをJavaEEサーバーにデプロイします。
  2. ブラウザから次のURLを使用してhello.jspファイルにアクセスし、Hello Worldアプリケーションを実行します。hostおよびportを、デプロイメント固有の値に置き換えます。
    http://host:port/hello/hello.jsp
    

    Hello Worldアプリケーションが起動します。キャッシュ・ファクトリ・インスタンスが作成され、クラスタのメンバーになります。値Hello World!を持つキーk2hello-exampleキャッシュにロードされます。次に、このキーがキャッシュから取得され、その値がブラウザに表示されます。最後にキャッシュ・ファクトリがシャットダウンされ、クラスタを離脱します。

サンプル・キャッシュの確認

この例のキャッシュ・サーバーは、デフォルトでキャッシュのデータを格納するように構成されます。データは、クラスタのすべてのメンバーが使用可能であり、それらのメンバーがクラスタから離脱した後も保持されます。たとえば、Hello Worldアプリケーションは、キャッシュにキーをロードし、そのキーを表示してから終了します。ただし、キャッシュとキーは、その後もすべてのクラスタ・メンバーが使用できます。

このステップでは、接続ファクトリ・コマンド行ツールを使用して、hello-exampleキャッシュに接続し、キャッシュ内のすべての項目を一覧表示します。ここでは、Coherenceのキャッシュが永続性と分散性の両方の性質を持っていることを示します。

キャッシュを確認するには:

  1. コマンド・プロンプトから、CacheFactoryクラスを使用してスタンドアロンのキャッシュ・ファクトリ・インスタンスを起動し、coherence.jarライブラリおよび構成ファイルの場所を、Java -cpオプションを使用して指定します。たとえば:
    java -cp COHERENCE_HOME\config;COHERENCE_HOME\lib\coherence.jar -Dcoherence.distributed.localstorage=false com.tangosol.net.CacheFactory
    

    キャッシュ・ファクトリ・インスタンスが起動し、クラスタのメンバーとなり、コマンド行ツールのコマンド・プロンプトを返します。

  2. コマンド行ツールのコマンド・プロンプトで、cacheコマンドを使用してhello-exampleキャッシュを取得します。
    cache hello-example
    
  3. コマンド行ツールのコマンド・プロンプトで、listコマンドを使用してキャッシュの内容を取得します。
    list
    

    コマンドは次の文字列を返し、表示します。

    k2 = Hello World!