Oracle Coherence REST を WebLogic Server への デプロイ手順 日本オラクル株式会社 作成日 : 2011/10/17 更新日 : 2011/11/2 VERSION: 1.1 Copyright Oracle Corporation Japan, 2011. All rights reserved. i
利用時の注意点 本ドキュメントのご利用に際しましては 以下の注意点にご留意くださいますようよろしくお願いいたします 本ドキュメントは参考情報として現状有姿 ("AS-IS") で提供され いかなる保証もありません 商品性及び特定目的への適合性についての黙示の保証を含め 明示的あるいは黙示的な保証は一切無いものとします 本ドキュメントについてのサポートサービスは一切提供されません Oracle ECM パートナー様以外への本ドキュメントの提供はお控えください ii
目次 1. はじめに... 1 1.1. 本資料について... 1 1.1.1. 目的... 1 1.1.2. 対象... 1 1.1.3. 前提知識... 1 1.1.4. 構成... 1 1.1.5. 参考情報... 1 1.2. 基本情報... 1 1.2.1. 動作確認済環境 /OS/ 必須アプリケーション... 1 1.2.2. 改訂履歴... 2 2. Coherence REST を WebLogic Server へのデプロイ... 3 2.1. 環境構築... 3 2.1.1. システム要件の確認... 3 2.1.2. Coherence 3.7.1のインストール... 3 2.1.3. WebLogic Server 10.3.5のインストール... 3 2.2. Coherence RESTとは... 4 2.2.1. Coherence RESTの概要... 4 2.2.2. Coherence RESTの依存関係... 4 2.2.3. Coherence RESTの構成の概要... 4 2.3. WebLogic Serverへのデプロイ... 5 2.3.1. 基本的なWebアプリケーションの作成... 5 2.3.2. デプロイのCoherence RESTのパッケージの作成... 6 2.3.3. WebLogic Serverへのデプロイ... 9 2.4. RESTクライアントでの動作確認... 13 2.4.1. RESTクライアントの入手... 13 2.4.2. RESTクライアントでの動作確認... 15 iii
1. はじめに 1.1. 本資料について 1.1.1. 目的 この資料では Oracle Coherence REST アプリケーションを WebLogic Server にデプロイする手順を説明します 1.1.2. 対象 次の読者を対象としています ソフトウェア開発者およびアーキテクトの方 1.1.3. 前提知識 次の読者を対象としています WebLogic Server Java EE に関する知識と用語の理解 1.1.4. 構成 各操作は前項 ( 前章 ) に書かれた設定が前提となります 当ドキュメントに記された手順通りに設定を行ってください 1.1.5. 参考情報 Oracle Coherence Client Guide Release 3.7.1-29 Deploying Coherence REST http://download.oracle.com/docs/cd/e24290_01/coh.371/e22839/rest_deploy.htm 1.2. 基本情報 1.2.1. 動作確認済環境 /OS/ 必須アプリケーション Oracle Coherence for Java バージョン Version: 3.7.1 Oracle WebLogic Server バージョン Version: 11g (10.3.5) OS Windows XP Professional Sp3 必須アプリケーション JDK/JRE 1.6.24 以上 1
1.2.2. 改訂履歴 なし 2
2. Coherence REST を WebLogic Server へのデプロイ 2.1. 環境構築 2.1.1. システム要件の確認 WebLogic Server 10.3.5 と Oracle Coherence for Java 3.7.1 をインストールする前に システム要件を確認します Oracle Fusion Middleware のシステム要件は以下の URL より確認できます Oracle Fusion Middleware System Requirements and Specifications 11g Release 1 (11.1.1) http://download.oracle.com/docs/html/e18558_01/fusion_requirements.htm また サポート条件をあわせて確認します 最新のサポート条件は 以下の URL より確認できます Oracle Fusion Middleware 11g Release1(11.1.1.x) certification Matrix http://www.oracle.com/technetwork/middleware/downloads/fmw-11gr1certmatrix.xls なお Oracle Coherence for Java 3.7.1 のシステム要件について 以下の資料を参照してください Oracle Coherence 開発者ガイド - Oracle Coherence for Java のインストール - システム要件 http://download.oracle.com/docs/cd/e24290_01/coh.371/e22837/gs_install.htm#cbhibeji 2.1.2. Coherence 3.7.1 のインストール Coherence 3.7.1 のダウンロード Oracle Coherence は 複数のハードウェアから構成されたサーバー群で仮想的な共有メモリ領域を確保し 大量のデータを高速処理するソフトです 最新版の Oracle Coherence for Java 3.7.1 は 以下のページからダウンロードできます http://www.oracle.com/technetwork/middleware/coherence/downloads/index.html Coherence 3.7.1 のインストール ダウンロードした coherence-java-3.7.1.0b27797.zip ファイルの内容を C: oracle product ( 以下は COHERENCE_HOME と記述 ) というディレクトリに抽出します この zip ファイルには 次のサブディレクトリを含む coherence ディレクトリが含まれています bin: コマンド スクリプトを格納 doc: 製品のドキュメントを格納 lib: 必要なライブラリ ファイルを格納 2.1.3. WebLogic Server 10.3.5 のインストール WebLogic Server 10.3.5 のダウンロード OTN より Coherence+OEPE-Package Installer 版の WebLogic Server 10.3.5 をダウンロードします ダウンロード先 http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html WebLogic Server 10.3.5 のインストール WebLogic Server 10.3.5 のインストールは 以下のインストール ガイドを参照してインストールしてください Oracle Fusion Middleware Installation Guide for Oracle WebLogic Server - Starting the Installation Program in Graphical Mode on Windows http://download.oracle.com/docs/cd/e21764_01/doc.1111/e14142/guimode.htm#babidjjh 3
2.2. Coherence REST とは 2.2.1. Coherence REST の概要 REST とは REST(REpresentational State Transfer) は ウェブのような分散ハイパーメディア システムのためのソフトウェア アーキテクチャのスタイル ( 標準ではない ) のひとつです REST 原則に従うシステムでは すべてのリソースは URI (Uniform Resource Identifier) で表される一意的なアドレスを持ちます HTTP プロトコルの GET/PUT/POST/DELETE 操作を使うことにより リソースを取得 / 追加 / 更新 / 削除することが可能です REST 原則に従うシステムは しばしば RESTful といわれます Coherence REST 導入 新版の Oracle Coherence 3.7.1 では Coherence REST(Coherence RESTful API) が新たに導入されました Coherence REST は HTTP プロトコルを介して Coherence キャッシュとキャッシュのエントリに簡単にアクセスできます リモート クライアントが Coherence クラスタのメンバーでなくても Coherence に格納されたデータをアクセスできます なお HTTP を使用して JSON や XML などの複数の表現形式のデータを マーシャリングできます Coherence REST を導入することにより Coherence キャッシュを利用できるクライアント言語が拡大されました 具体的には Ruby や Python などで Coherence キャッシュで保持されたデータに対し アクセス 操作 レポートが可能になっています 2.2.2. Coherence REST の依存関係 Coherence REST は 次の Oracle およびサードパーティのライブラリに依存します 名前説明 JAR ファイル Jersey 1.8 JAX-RS(REST の Web サービス用の Java API JSR 311) のリファレンス実装 jersey-core-1.8.jar jersey-json-1.8.jar jersey-server-1.8.jar jersey-grizzly2-1.8.jar jersey-grizzly2-1.8.jar は以下の Jersey プロジェクト ページからダウンロードします http://jersey.java.net/ Grizzly 2.1.1 Jerseyとうまく統合する組込みのWebサーバー grizzly-framework-2.1.1.jar grizzly-http-2.1.1.jar grizzly-http-server-2.1.1.jar Jackson 1.8.1 JSONシリアライザ jackson-all-1.8.1.jar Jersey と Jackson の JAR ファイルは COHERENCE_HOME/lib ディレクトリに含まれています Grizzly の JAR ファイルは Grizzly のプロジェクト ページからダウンロードできます http://grizzly.java.net/ 2.2.3. Coherence REST の構成の概要 Coherence REST は 以下の二つの構成ファイルを使用して構成されます 4
キャッシュ構成デプロイメント ディスクリプタ REST 構成デプロイメント ディスクリプタ キャッシュ構成デプロイメント ディスクリプタ このファイルは クライアント側のキャッシュ サービスや HTTP 経由でリモートの REST クライアントからの接続を受け付ける HTTP のアクセプターを定義するために使用されます アクセプターは クライアントが接続するクラスタ側の HTTP サーバーのアドレスとポートが含まれます デフォルトのファイル名が coherence-cache- config.xml です このファイルのスキーマは coherence-cacheconfig.xsd ファイルです <http-acceptor> 要素の完全なリファレンスについて 以下の資料を参照してください Oracle Coherence 開発者ガイド - キャッシュ構成要素 - <http-acceptor> http://download.oracle.com/docs/cd/e24290_01/coh.371/e22837/appendix_cacheconfig.h tm#cohdg5594 実行時に classpath 上で検出された最初のキャッシュ構成ファイルが使用されます また キャッシュ構成ファイルは tangosol.coherence.cacheconfig システム プロパティを使用して明示的に指定できます プログラムによって設定することもできます キャッシュ構成ファイルの指定の詳しくは 以下の資料を参照してください Oracle Coherence 開発者ガイド - 構成の理解 - キャッシュ構成ファイルの指定 http://download.oracle.com/docs/cd/e24290_01/coh.371/e22837/gs_config.htm#cohdg5009 REST 構成デプロイメント ディスクリプタ このファイルは Jersey のリソース構成クラス カスタム アグリゲーターとカスタム エントリ プロセッサを設定するために使用されます デフォルトのファイル名が coherence-rest-config.xml です スキーマが coherence-rest-config.xsd ファイルで定義されています このファイルが classpath 上に存在する必要があり 名前が tangosol.coherence.rest.config システム プロパティを使用してオーバーライドできます REST 構成デプロイメント ディスクリプタの詳細なリファレンスについては 以下の資料を参照してください Oracle Coherence クライアント ガイド 付録 A REST 構成要素 http://download.oracle.com/docs/cd/e24290_01/coh.371/e22839/appendix_rest.htm#chddfbbe 2.3. WebLogic Server へのデプロイ 2.3.1. 基本的な Web アプリケーションの作成 ここでは 以下の階層でサンプル Web アプリケーション RestExample を作成します / /WEB-INF/web.xml /WEB-INF/classes/example/Person.java /WEB-INF/classes/example/Person.class /WEB-INF/lib 以下は Web アプリケーション RestExample の格納先を RESTExample_ROOT と表記します 以下は 作成の手順を説明します /WEB-INF/web.xmlを作成 <?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" 5
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="webapp_id" version="2.5"> <display-name>restexample</display-name> </web-app> /WEB-INF/classes/example/Person.java を作成 package example; import java.io.serializable; import javax.xml.bind.annotation.xmlaccesstype; import javax.xml.bind.annotation.xmlaccessortype; import javax.xml.bind.annotation.xmlrootelement; @XmlRootElement(name="person") @XmlAccessorType(XmlAccessType.PROPERTY) public class Person implements Serializable { public Person() {} public Person(String name, int age) { m_name = name; m_age = age; } public String getname() { return m_name; } public void setname(string name) { m_name = name; } public int getage() { return m_age; } public void setage(int age) { m_age = age; } } protected String m_name; protected int m_age; /WEB-INF/classes/example/Person.java をコンパイル 以下の java コマンドで Person.java をコンパイルします > cd RESTExample_ROOT\WEB-INF\classes > javac example\person.java 2.3.2. デプロイの Coherence REST のパッケージの作成 ここでは 上に作成した基本的な Web アプリケーションを基づき Coherence REST の Web アプリケーションを作成して パッケージを生成します / WEB-INF/lib ディレクトリに次のJARをコピー COHERENCE_HOME/lib ディレクトリから /WEB-INF/lib ディレクトリに次のJARをコピーします coherence.jar coherence-rest.jar jackson-all-1.8.1.jar 6
jersey-core-1.8.jar jersey-json-1.8.jar jersey-server-1.8.jar /WEB-INF/web.xml に次のサーブレット定義を追加以下の定義をコピーして web.xmlファイルの <web-app> 要素の下に追加します <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.defaultresourceconfig</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-INF/weblogic.xml を作成 以下のように WebLogic Server 固有のデプロイメント ディスクリプタ /WEB-INF/weblogic.xml を作成します <?xml version="1.0" encoding="utf-8"?> <wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"> <wls:container-descriptor> <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes> </wls:container-descriptor> </wls:weblogic-web-app> /WEB-INF/classes ディレクトリに次の xml ファイルを作成 coherence-rest-config.xml coherence-cache-config.xml tangosol-coherence-override.xml /WEB-INF/classes/coherence-rest-config.xml <?xml version="1.0"?> <rest xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://xmlns.oracle.com/coherence/coherence-rest-config" xsi:schemalocation= "http://xmlns.oracle.com/coherence/coherence-rest-config coherence-rest-config.xsd"> <resources> <resource> <cache-name>dist-http-example</cache-name> <key-class>java.lang.string</key-class> <value-class>example.person</value-class> </resource> 7
</resources> </rest> coherence-rest-config.xmlファイルの詳細については 前述のREST 構成デプロイメント ディスクリプタを参照してください /WEB-INF/classes/coherence-cache-config.xml <?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>dist-http-example</cache-name> <scheme-name>dist-http</scheme-name> </cache-mapping> </caching-scheme-mapping> <caching-schemes> <distributed-scheme> <scheme-name>dist-http</scheme-name> <backing-map-scheme> <local-scheme/> </backing-map-scheme> <autostart>true</autostart> </distributed-scheme> </caching-schemes> </cache-config> この例では キャッシュ名は dist-http-example と設定されています coherence-cache-config.xmlファイルの詳細については 前述のキャッシュ構成デプロイメント ディスクリプタを参照してください /WEB-INF/classes/tangosol-coherence-override.xml <?xml version="1.0" encoding="utf-8"?> <coherence xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.oracle.com/coherence/coherence-operational-config http://xmlns.oracle.com/coherence/coherence-operational-config/1.0/coherence-operational-config.xsd"> <cluster-config> <member-identity> <cluster-name system-property="tangosol.coherence.cluster">mycluster</cluster-name> </member-identity> <multicast-listener> <port system-property="tangosol.coherence.clusterport">3059</port> </multicast-listener> </cluster-config> </coherence> この構成はオプションの構成です この構成では デフォルトのCoherenceのクラスタ名を MyCluster に ポートを 3059 にオーバーライドします tangosol-coherence-override.xmlの詳細について 以下の資料を参照してください http://download.oracle.com/docs/cd/e24290_01/coh.371/e22837/gs_config.htm#cegjdafe Web アーカイブ (WAR) ファイルを作成 8
以下のコマンドで WAR ファイルを作成します > cd RESTExample_ROOT > jar -cvf RestExample.war * 作成したアーカイブには 次のファイルが含まれている必要があります /WEB-INF/web.xml /WEB-INF/weblogic.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/jackson-all-1.8.1.jar /WEB-INF/lib/jersey-core-1.8.jar /WEB-INF/lib/jersey-json-1.8.jar /WEB-INF/lib/jersey-server-1.8.jar 2.3.3. WebLogic Server へのデプロイ ここでは WebLogic 管理コンソールを使って 上に生成した Coherence Rest パッケージ RestExample.war を WebLogic Server にデプロイする手順を説明します WebLogic 管理コンソールにログイン http://localhost:7001/console 管理ユーザーとパスワードを入力して ログイン をします RestExample.war のデプロイ 9
左側に デプロイメント Deployments を選択して 表示される デプロイメントのサマリー Summary of Deployment ページの インストール Install をクリックします インストールおよびデプロイの準備をするデプロイメントの選択 Locate deployment to install and prepare for deployment ページが表示されます RESTExample_ROOT RestExample.war を選択して 次へ Next をクリックします ターゲット指定スタイルの選択 Choose targeting style ページが表示されます このデプロイメントをアプリケーションとしてインストールする Intall this deployment as an application を選択して 次へ Next をクリックします 10
オプション設定 Optional Settings ページが表示されます デフォルトのまま 終了 Finish をクリックします アプリケーション名は デフォルトは war ファイルの名前です この例では RestExample となります 11
デプロイメントのサマリー Summary of Deployment ページが表示されます RestExample のアプリケーションが追加され ヘルス health 状態が OK であることを確認します ログを確認してみます ブラウザーから Coherence キャッシュのデータのアクセル http://localhost:7001/{ アプリケーション名 }/{ キャッシュ名 } の形式でキャッシュ コレクションをアクセスします この例では http://localhost:7001/restexample/dist-http-example でアクセスします 12
Coherence クラスタが起動されたことをログで確認してみます 2.4. REST クライアントでの動作確認 2.4.1. REST クライアントの入手 Coherence REST は キャッシュとの対話に使用できる多くの操作を事前に定義されています REST クライアントでは HTTP プロトコルを介して Coherence REST を使ってキャッシュに対する操作が可能となります ここでは Mozilla Firefox のアドオンとなる REST クライアントを使用します ダウンロード先 https://addons.mozilla.org/ja/firefox/addon/restclient/ 13
REST クライアントのインストール 上記のダウンロード先を Mozilla Firefox ブラウザーで開き + Add to Firefox ボタンをクリックします インストール確認ダイアログで Install Now をクリックします アドオンをインストールしたらブラウザーを再起動します ブラウザーを再起動したら Tools REST Client で REST クライアントを起動します 14
+ Add Request Header ボタンをクリックします Content-Type=application/json のヘッダを追加します 2.4.2. REST クライアントでの動作確認 ここでは REST クライアントで Coherence RESTful API で Coherence キャッシュに対し PUT/GET/POST/DELETE 操作をおこないます Coherence RESTful API の詳細について 以下の資料を参照してください Oracle Coherence Client Guide Release 3.7.1 - Using the Coherence REST API http://docs.oracle.com/cd/e24290_01/coh.371/e22839/rest_api.htm#chddiddh PUT 操作 PUT 操作では キャッシュに単一のオブジェクトを追加 更新することができます 以下の操作は Coherence APIのcache.put(1, new Person( chris, 30)) と相当です PUT http://localhost:7001/restexample/dist-http-example/1 Content-Type=application/json Request Body: {"name":"chris","age":30} 15
以下の操作は Coherence APIのcache.put(2, new Person( adam, 26)) と相当です PUT http://localhost:7001/restexample/dist-http-example/2 Content-Type=application/json Request Body: {"name":"adam","age":26} GET 操作 GET 操作では キャッシュ内に存在するオブジェクトを取得できます 以下の操作は Coherence APIのcache.get(1) と相当です GET http://localhost:7001/restexample/dist-http-example/1.json 16
以下の操作は Coherence API の cache.get(1) と相当です GET http://localhost:7001/restexample/dist-http-example/1.xml 以下の操作は Coherence API の cache.entryset(new EqualsFilter("getName", "adam")); GET http://localhost:7001/restexample/dist-http-example?q=name is 'adam' 17
以下の操作は dist-http-example キャッシュから全てのオブジェクトの name のみ取得します GET http://localhost:7001/restexample/dist-http-example;p=name 以下の操作は Coherence API の cache. aggregate(alwaysfilter.instance, new Count()) と相当です GET http://localhost:7001/restexample/dist-http-example/count() 18
以下の操作は Coherence API の cache.aggregate(createfilter("true"), new DoubleAverage("getAge")) と相当です GET http://localhost:7001/restexample/dist-http-example/double-average(age) POST 操作 POST 操作では キャッシュ内のオブジェクトを更新する Processor を実行できます 事前定義の Processor があります またカスタム作成できます 事前定義の Processor は 以下の資料を参照してください Oracle Coherence Client Guide Release 3.7.1 - Listing of Pre-defined Entry Processors http://docs.oracle.com/cd/e24290_01/coh.371/e22839/rest_api.htm#chdgfgce カスタム Processor の作成については 以下の資料を参照してください Oracle Coherence Developer's Guide Release 3.7.1 - Using Entry Processors for Data Concurrency http://docs.oracle.com/cd/e24290_01/coh.371/e22837/api_transactionslocks.htm#beijcgdf POST http://localhost:7001/restexample/dist-http-example/increment(age,1) 19
DELETE 操作 DELETE 操作では キャッシュ内の一つまたは 複数のオブジェクトを削除できます 以下の操作は Coherence APIの cache.remove(1) と相当です DELETE http://localhost:7001/restexample/dist-http-example/1 最後 再度以下の GET 操作をおこないます GET http://localhost:7001/restexample/dist-http-example 20
21