プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Coherenceリモート・クライアントの開発
12c (12.2.1.2.0)
E82724-01
目次へ移動
目次

前
次

28 デフォルトのREST実装の変更

この章ではCoherence REST実装のデフォルト動作を変更する方法について説明します。

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

28.1 パススルー・リソースの使用

Coherence RESTには、キャッシュへのパススルー・アクセスを有効にするリソース実装が含まれています。リソースを使用して、グラフィックなどの静的バイナリをキャッシュできます。リソースはPassThroughRootResourceクラスで実装され、PassThroughResourceConfigクラスを使用して登録されます。

アプリケーションでパススルー・リソースを使用するには、キャッシュ構成ファイルでプロキシ・サービス定義を変更し、<resource-config>要素内にPassThroughResourceConfigクラスの完全修飾名を追加します。コンテキストが定義されない場合、リソースは特定のコンテキスト・パスまたはデフォルト・パス(/)にマップされます。次に、リソースを登録して、/cacheをコンテキスト・パスとして使用する例を示します。coherence-rest-config.xml構成ファイルで定義されるすべてのキャッシュ・リソースの前には、URLで/cache/を付ける必要があります。

<proxy-scheme>
   <service-name>HttpProxyService</service-name>
   <acceptor-config>
      <http-acceptor>
         ...
         <resource-config>
            <context-path>/cache</context-path>
            <instance>
               <class-name>com.tangosol.coherence.rest.server.PassThroughResourceConfig</class-name>
            </instance>
         </resource-config>
      </http-acceptor>
   </acceptor-config>
   <autostart>true</autostart>
</proxy-scheme>

28.2 カスタム・プロバイダおよびリソースの使用

必要に応じて、カスタム・プロバイダおよびリソースを作成できます。このセクションでは、カスタム・プロバイダを登録する方法、およびCoherenceのデフォルト・ルート・リソースをオーバーライドする方法について説明します。

com.tangosol.coherence.rest.server.DefaultResourceConfigクラスでは、カスタム・プロバイダまたはリソースの登録に使用できるパッケージ・スキャンをサポートします。次の例では、パッケージ・スキャンを使用して、カスタム・プロバイダおよびリソースを登録しています。

public class MyResourceConfig  extends DefaultResourceConfig
   {
   public MyResourceConfig()
      {
      super("com.my.providers;com.my.resources");
      }
   }

また次の例では、DefaultResourceConfigクラスに定義されている1つ以上のregisterメソッドをオーバーライドして、カスタム・プロバイダ、カスタム・ルート・リソースを使用したり、フィルタおよびフィルタ・ファクトリを追加する方法を示します。

注意:

Coherenceのデフォルト・プロバイダをオーバーライドする場合は必ずルート・リソース・クラスもオーバーライド(登録解除)してください(DefaultRootResourceクラスは、デフォルト・プロバイダに依存して、必要な依存性および構成を提供します)。

public class MyResourceConfig  extends DefaultResourceConfig
    {
    protected void registerRootResource()
        {
        // remove if you don't want Coherence defaults to be registered
        super.registerRootResource(); 
        getClasses().add(MyRootResource.class);
        }
 
    protected void registerProviders()
        {
        // remove if you don't want Coherence defaults to be registered
        super.registerProviders();
        getSingletons().add(new MyProvider());
        }
 
    protected void registerContainerRequestFilters()
        {
        // remove if you don't want Coherencedefaults to be registered
        super.registerContainerRequestFilters();
        getContainerRequestFilters().add(new MyRequestFilter());
        }
 
    protected void registerContainerResponseFilters()
        {
        // remove if you don't want Coherence defaults to be registered
        super.registerContainerResponseFilters();
        getContainerResponseFilters().add(new MyResponseFilter());
        }
 
    protected void registerResourceFilterFactories()
        {
        // remove if you don't want Coherence defaults to be registered
        super.registerResourceFilterFactories();
        getResourceFilterFactories().add(new MyResourceFilterFactory());
        }
    }

キャッシュ構成ファイルでカスタム・リソース構成クラスを有効にするには、HTTPアクセプタ構成内の<resource-config>要素を使用して、クラスの完全修飾名を追加します。コンテキスト・パスが定義されない場合、クラスは特定のコンテキスト・パスまたはデフォルトのコンテキスト・パス(/)にマップされます。複数のリソース構成クラス定義を別のコンテキスト・パスに追加、マップできます。次に、MyResourceConfigという名前のカスタム・リソースを登録して、/MyApplicationコンテキスト・パスにマップする例を示します。

<proxy-scheme>
   <service-name>ExtendHttpProxyService</service-name>
   <acceptor-config>
      <http-acceptor>
         ...
            <resource-config>
               <context-path>/MyApplication</context-path>
               <instance>
                    <class-name>package.MyResourceConfig</class-name>
               </instance>
            </resource-config>
      </http-acceptor>
   </acceptor-config>
   <autostart>true</autostart>
</proxy-scheme>

28.3 埋込みHTTPサーバーの変更

Coherence RESTでは、リクエストの処理にデフォルトでOracleの軽量HTTPサーバーを使用します。ただし、この実装は本番環境には適切でなく、一般的には開発またはテスト時に使用されます。本番環境では、CoherenceにGrizzly HTTPサーバー、Simple HTTPサーバーおよびJetty HTTPサーバーが実装されます。これらのサーバーはJerseyでサポートされます。追加のHTTPサーバーの統合する方法については、このドキュメントでは述べません。Jerseyのドキュメントを参照してください。

http://jersey.java.net/

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

28.3.1 Grizzly HTTPサーバーの使用

Coherence RESTは、Grizzly 2 HTTPサーバー実装(com.tangosol.coherence.rest.server.GrizzlyHttpServer)を備えており、デフォルトのHTTPサーバーのかわりに使用できます。Grizzly HTTPサーバーの詳細は、次を参照してください。

http://grizzly.java.net/

キャッシュ構成ファイルでGrizzlyサーバーを有効にするには、HTTPアクセプタ構成内の<class-name>要素の値として実装の完全修飾名を追加します。次に例を示します。

<proxy-scheme>
   <service-name>ExtendHttpProxyService</service-name>
   <acceptor-config>
      <http-acceptor>
         <class-name>com.tangosol.coherence.rest.server.GrizzlyHttpServer
         </class-name>
         ...
      </http-acceptor>
   </acceptor-config>
   <autostart>true</autostart>
</proxy-scheme>

28.3.2 Simple HTTPサーバーの使用

Coherence RESTは、Simple HTTPサーバー実装(com.tangosol.coherence.rest.server.SimpleHttpServer)を備えており、デフォルトのHTTPサーバーのかわりに使用できます。Simpleフレームワークの詳細は、次を参照してください。

http://www.simpleframework.org/

キャッシュ構成ファイルでSimple HTTPサーバーを有効にするには、HTTPアクセプタ構成内の<class-name>要素の値として実装の完全修飾名を追加します。次に例を示します。

<proxy-scheme>
   <service-name>ExtendHttpProxyService</service-name>
   <acceptor-config>
      <http-acceptor>
         <class-name>com.tangosol.coherence.rest.server.SimpleHttpServer
         </class-name>
         ...
      </http-acceptor>
   </acceptor-config>
   <autostart>true</autostart>
</proxy-scheme>

28.3.3 Jetty HTTPサーバーの使用

Coherence RESTは、Jetty HTTPサーバー実装(com.tangosol.coherence.rest.server.JettyHttpServer)を備えており、デフォルトのHTTPサーバーのかわりに使用できます。Jetty HTTPサーバーの詳細は、次を参照してください。

http://www.eclipse.org/jetty/

キャッシュ構成ファイルでJettyサーバーを有効にするには、HTTPアクセプタ構成内の<class-name>要素の値として実装の完全修飾名を追加します。次に例を示します。

<proxy-scheme>
   <service-name>ExtendHttpProxyService</service-name>
   <acceptor-config>
      <http-acceptor>
         <class-name>com.tangosol.coherence.rest.server.JettyHttpServer
         </class-name>
         ...
      </http-acceptor>
   </acceptor-config>
   <autostart>true</autostart>
</proxy-scheme>