この章では、Coherence RESTを埋込みHTTPサーバー、WebLogicサーバーおよびGlassFishサーバーにデプロイする方法について説明します。一般的なサーブレット・コンテナの使用方法についても説明します。Coherence RESTの保護の詳細は、『Oracle Coherenceの保護』を参照してください。
この章には次の項が含まれます:
Coherenceでは、REST Webサービスをホストするために使用できる2つの埋込みHTTPサーバーを提供しています。com.tangosol.coherence.rest.server.DefaultHttpServer
(Oracleの軽量HTTPサーバーでバッキング)とcom.tangosol.coherence.rest.server.GrizzlyHttpServer
(Grizzlyでバッキング)です。デフォルトのHTTPサーバーの変更の詳細は、「埋込みHTTPサーバーの変更」を参照してください。
HTTPサーバーは、Coherenceプロキシ・サーバー上で有効である必要があります。HTTPサーバーを有効にするには、プロキシのキャッシュ構成ファイルを編集して、<http-acceptor>
要素を<proxy-scheme>
要素の中に追加し、HTTPサーバーのホストおよびポートを指定します。
次の例では、ローカルホスト127.0.0.1
およびポート8080
でリクエストを受け入れるようにHTTPサーバーを構成します。例では、HTTPサーバー・クラスおよびJerseyリソース構成クラスを明示的に定義し、Coherence RESTアプリケーションのコンテキスト・パスとして/
を使用しています。ただし、デフォルト値があるので含める必要はありません。コンテキスト・パスは必要に応じて変更でき、別のコンテキス・パスとともに追加のCoherence RESTアプリケーションを定義できます。すべての<http-acceptorサブ要素の詳細なリファレンスは、『Oracle Coherenceでのアプリケーションの開発』を参照してください。
<proxy-scheme> <service-name>ExtendHttpProxyService</service-name> <acceptor-config> <http-acceptor> <class-name> com.tangosol.coherence.rest.server.DefaultHttpServer</class-name> <local-address> <address>127.0.0.1</address> <port>8080</port> </local-address> <resource-config> <context-path>/</context-path> <instance> <class-name> com.tangosol.coherence.rest.server.DefaultResourceConfig </class-name> </instance> </resource-config> </http-acceptor> </acceptor-config> <autostart>true</autostart> </proxy-scheme>
WebLogic Serverには、WebLogicサーバー・ドメイン内にCoherenceアプリケーションをパッケージ化、デプロイおよび管理する方法を標準化するCoherence統合機能が含まれています。Coherence RESTは統合標準に準拠する必要があります。WebLogicサーバー・ドメインのクラスタの構成に関する詳細は、『Oracle WebLogic Serverクラスタの管理』を参照してください。さらに、Coherenceアプリケーションは、グリッド・アーカイブ(GAR)としてパッケージ化する必要があります。GARの作成に関する詳細は、『Oracle WebLogic ServerのためのOracle Coherenceアプリケーションの開発』を参照してください。
この項の内容は次のとおりです。
Coherence RESTのドメインの構成:
Coherence RESTをホストするWebLogicサーバー・ドメインに、管理Coherenceサーバーを作成します。サーバーは、Coherenceクラスタのストレージが無効なメンバーとして構成する必要があります。Coherence RESTソリューションに複数の管理Coherenceサーバーが必要な場合、サーバーはWebLogicサーバー・クラスタの層として管理される必要があります。管理Coherenceサーバーに関する詳細は『Oracle WebLogic Serverクラスタの管理』を参照してください。
COHERENCE_HOME
/lib/coherence-rest.jar
を管理Coherenceサーバーを対象とする共有ライブラリとしてデプロイします。
注意: coherence-rest.jar をシステムのクラスパスとして追加するか、GARファイルの/lib ディレクトリに含めることもできます。 |
Coherence RESTは、GlassFish参照実装からのJAXBプロバイダを要求します。WebLogicサーバーはデフォルトでEclipse MOXy JAXBプロバイダを使用します。GlassFish JAXBプロバイダを使用するようにWebLogicサーバーを構成するには、WebLogicサーバーの起動時に、次のシステム・プロパティを設定します。
-Dcom.sun.xml.ws.spi.db.BindingContextFactory=com.sun.xml.ws.db. glassfish.JAXBRIContextFactory -Djavax.xml.bind.JAXBContext=com.sun.xml.bind.v2.ContextFactory
WebLogic Server用のGlassFish JAXBプロバイダの構成の詳細は、『Oracle® Fusion Middleware Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』を参照してください。
Coherence REST Webアプリケーションをパッケージ化するには:
次のようにWebアプリケーション・ディレクトリ構造を作成します。
/ /WEB-INF/ /WEB-INF/classes/ /WEB-INF/lib/
次のJARファイルをORACLE_HOME
/oracle_common/modules/
ディレクトリから/WEB-INF/lib
ディレクトリにコピーします。
jackson-core-asl-1.9.2.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jackson-xc-1.9.2.jar
jersey-core-1.18.jar
jersey-json-1.18.jar
jersey-multipart-1.18.jar
jersey-server-1.18.jar
jersey-servlet-1.18.jar
Webアプリケーション・デプロイメント・ディスクリプタ(web.xml
)を作成し、次のようにRESTアプリケーションのサーブレットの定義を含めます。
注意: デフォルトのサーブレット・コンテキスト・リスナーは、RESTアプリケーションのシャットダウン中にクラスタ・メンバーをシャットダウンするcoherence-rest.jar に含まれています。このリスナーは次に示すように登録されています。クラスタ・メンバーがシャットダウンされない場合、シャットダウン後に様々な例外がスローされます。 |
<web-app> ... <listener> <listener-class> com.tangosol.coherence.rest.servlet.DefaultServletContextListener </listener-class> </listener> <servlet> <servlet-name>Coherence REST</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer </servlet-class> <init-param> <param-name>com.sun.jersey.config.property.resourceConfigClass </param-name> <param-value> com.tangosol.coherence.rest.server.ContainerResourceConfig </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Coherence REST</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> ... </web-app>
web.xml
ファイルを/WEB-INF/
ディレクトリに保存します。
jar
ユーティリティを使用して、WARファイルを作成します。たとえば、Webアプリケーション・ディレクトリのルートでコマンド・プロンプトから次のコマンドを発行します。
jar -cvf coherence_rest.war *
Coherenceアプリケーションをパッケージ化するには:
coherence-rest-config.xml
ファイルをCoherenceアプリケーションのルートにコピーします。構造は次のとおりにする必要があります。
/ /com/myco/MyClass.class /lib/ /META-INF/ /META-INF/coherence-application.xml /META-INF/coherence-cache-config.xml /META-INF/pof-config.xml coherence-rest-config.xml
pof-config.xml
ファイルを編集し、Coherence RESTデフォルト・ユーザー・タイプを含むcoherence-rest-pof-config.xml
POF構成ファイルをインクルードします。例:
<pof-config> <user-type-list> <include>coherence-pof-config.xml</include> <include>coherence-rest-pof-config.xml</include> ... </user-type-list> </pof-config>
coherence-rest-pof-config.xml
ファイルがcoherence-rest.jar
ライブラリに配置され、実行時に自動的にロードされます。
jar
ユーティリティを使用して、GARファイルを作成します。たとえば、コマンド・プロンプトからGARディレクトリのルートで次のコマンドを発行します。
jar -cvf MyCohApp.gar *
エンタープライズ・アプリケーションをパッケージ化するには
エンタープライズ・アプリケーション・ディレクトリ構造を作成し、Coherence REST WARファイルおよびCoherenceアプリケーションGARファイルをEARのルートにコピーします。例:
/ /META-INF/ /META-INF/application.xml /META-INF/weblogic-application.xml /coherence_rest.war /MyCohApp.gar
application.xml
ファイルを編集し、Coherence REST Webアプリケーションのモジュール定義を追加します。例:
<application> <module> <web> <web-uri>coherence_rest.war</web-uri> <context-root>/</context-root> </web> </module> </application>
weblogic-application.xml
ファイルを編集し、coherence-rest.jar
共有ライブラリのライブラリ参照およびCoherenceアプリケーションGARファイルのモジュール参照を追加します。例:
<weblogic-application> <module> <name>person</name> <type>GAR</type> <path>MyCohApp.gar</path> </module> <library-ref> <library-name>coherence-rest</library-name> </library-ref> </weblogic-application>
jar
ユーティリティを使用して、EARファイルを作成します。たとえば、コマンド・プロンプトでEARディレクトリのルートから次のコマンドを発行します。
jar -cvf MyCohRestApp.ear *
エンタープライズ・アプリケーションをデプロイするには
WebLogicサーバー・管理コンソールまたはWLSTツールを使用して、タスク1で作成した管理CoherenceサーバーにEARをデプロイします、
ブラウザから、管理Coherenceサーバーのリスニング・ポートに移動しURLの一部にキャッシュ名を含めることにより、デプロイメントを検証します。例: http://
host
:
port
/rest/
{cacheName}
この項では、Coherence RestをJava EE環境にデプロイする方法について説明します。
この項には、次のトピックが含まれます:
Coherence RESTアプリケーションをパッケージ化するには:
次のように基本のWebアプリケーション・ディレクトリ構造を作成します。
/ /WEB-INF /WEB-INF/classes /WEB-INF/lib
次のJARファイルをCOHERENCE_HOME
/lib
ディレクトリおよびORACLE_HOME
/oracle_common/modules/
ディレクトリから/WEB-INF/lib
ディレクトリへコピーします:
coherence.jar
coherence-rest.jar
jackson-core-asl-1.9.2.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jackson-xc-1.9.2.jar
jersey-core-1.18.jar
jersey-json-1.18.jar
jersey-multipart-1.18.jar
jersey-server-1.18.jar
jersey-servlet-1.18.jar
Webアプリケーション・デプロイメント・ディスクリプタ(web.xml
)を作成し、次のようにRESTアプリケーションのサーブレットの定義を含めます。
注意: デフォルトのサーブレット・コンテキスト・リスナーは、RESTアプリケーションのシャットダウン中にクラスタ・メンバーをシャットダウンするcoherence-rest.jar に含まれています。このリスナーは次に示すように登録されています。クラスタ・メンバーがシャットダウンされない場合、シャットダウン後に様々な例外がスローされます。 |
<web-app> ... <listener> <listener-class> com.tangosol.coherence.rest.servlet.DefaultServletContextListener </listener-class> </listener> <servlet> <servlet-name>Coherence REST</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer </servlet-class> <init-param> <param-name>com.sun.jersey.config.property.resourceConfigClass </param-name> <param-value> com.tangosol.coherence.rest.server.ContainerResourceConfig </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Coherence REST</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> ... </web-app>
web.xml
ファイルを/WEB-INF/
ディレクトリに保存します。
coherence-rest-config.xml
ファイルを/WEB-INF/classes
ディレクトリにコピーします。
coherence-cache-config.xml
ファイルおよびtangosol-coherence-override.xml
ファイルをWEB-INF/classes
ディレクトリにコピーします。
jar
ユーティリティを使用して、Web ARchive (WAR)ファイルを作成します。たとえば、Webアプリケーション・ディレクトリのルートでコマンド・プロンプトから次のコマンドを発行します。
jar -cvf coherence_rest.war *
アーカイブには次のファイルが含まれます。
/WEB-INF/web.xml /WEB-INF/classes/coherence-rest-config.xml /WEB-INF/classes/tangosol-coherence-override.xml /WEB-INF/classes/coherence-cache-config.xml /WEB-INF/lib/coherence.jar /WEB-INF/lib/coherence-rest.jar /WEB-INF/lib/jersey-server-1.18.jar /WEB-INF/lib/jersey-servlet-1.18.jar /WEB-INF/lib/jersey-core-1.18.jar /WEB-INF/lib/jersey-json-1.18.jar /WEB-INF/lib/jersey-multipart-1.18.jar /WEB-INF/lib/jersey-grizzly2-1.12.jar /WEB-INF/lib/jackson-core-asl-1.9.2.jar /WEB-INF/lib/jackson-jaxrs-1.9.2.jar /WEB-INF/lib/jackson-mapper-asl-1.9.2.jar /WEB-INF/lib/jackson-xc-1.9.2.jar
Coherence RESTをGlassFishサーバーにデプロイするには:
GlassFish管理コンソール(http://localhost:4848/
)から「構成」→JVM設定とクリックします。
「JVMオプション」オプション・タブをクリックして、次のオプションを追加します。
-Dcom.sun.enterprise.overrideablejavaxpackages=javax.ws.rs,javax.ws.rs.core,javax.ws.rs.ext
「デプロイメント用のCoherence RESTのパッケージ化」で説明されているように、Coherence RESTをWARファイルとしてパッケージ化します。また、WEB-INF/sun-web.xml
またはWEB-INF/glassfish-web.xml
でクラス・ローダー委任をfalse
に設定することで、GlassFishで配信されるJerseyのバージョンをCoherence RESTで配信されるJerseyのバージョンにオーバーライドします。例:
<sun-web-app error-url=""> <class-loader delegate="false"/> </sun-web-app>
GlassFish管理コンソールを使用してWARをデプロイします。
ブラウザから、http://localhost:8080/coherence_rest/
{cacheName}
に移動して、デプロイメントを検証します。
Coherence RESTをWARファイルとしてパッケージ化することで、Coherence RESTを任意のサーブレット・コンテナにデプロイできます。詳細は、「デプロイ用のCoherence RESTのパッケージ化」を参照してください。WARファイルのデプロイの詳細は、ベンダーのドキュメントを参照してください。また、追加のサーブレット・コンテナ・デプロイメントのオプションについては、Jerseyユーザー・ガイドを参照してください。
http://jersey.java.net/nonav/documentation/latest/user-guide.html#d4e194