24 Coherence RESTの概要
この章の内容は次のとおりです。
- Coherence RESTの概要
Coherence RESTを使用すると、HTTPプロトコルを介してCoherenceキャッシュおよびキャッシュ・エントリに簡単にアクセスできます。 - Coherence RESTの依存性
Coherence RESTの実装は、COHERENCE_HOMEの/lib/coherence-rest.jarライブラリにパッケージ化され、coherence.jarライブラリに依存します。 - Coherence RESTの構成の概要
Coherence RESTは、キャッシュ構成ファイルおよびREST構成ファイルを使用して構成されます。 - データ・フォーマットのサポートの理解
Coherence RESTは、入力および出力としてXMLおよびJSONフォーマットをサポートします。 - Coherence RESTクライアントの認証と認可
Coherence RESTは、クラスタリソースへのアクセスを制限する認証と認可の両方を提供します。
親トピック: Coherence RESTの使用
Coherence RESTの概要
Coherence RESTの例
Coherenceディストリビューションには、RESTアプリケーションのエンドツーエンドの例が含まれます。『Oracle Coherenceのインストール』のCoherence RESTの例に関する項を参照してください。
親トピック: Coherence RESTの概要
Coherence RESTの依存性
COHERENCE_HOME/lib/coherence-rest.jarライブラリにパッケージ化され、coherence.jarライブラリに依存します。また、Coherence REST実装では、多くのライブラリ依存性が含まれ、様々なHTTPサーバー実装(Netty HTTPサーバー、Simple HTTPサーバー、Jetty HTTPサーバーおよびGrizzly HTTPサーバー)もサポートしています。これらの依存性を管理するには、アプリケーションでMavenを使用することを強くお薦めします。初めてMavenを使用する場合は、https://maven.apache.org/を参照してください。
Coherence RESTとNetty HTTPサーバーを使用するには、次の依存性をMaven pom.xmlファイルに追加します。
<dependencies>
<dependency>
<groupId>com.oracle.coherence</groupId>
<artifactId>coherence</artifactId>
<version>12.2.1-4-0</version>
</dependency>
<dependency>
<groupId>com.oracle.coherence</groupId>
<artifactId>coherence-rest</artifactId>
<version>12.2.1-4-0</version>
</dependency>
<dependency>
<groupId>com.oracle.coherence</groupId>
<artifactId>coherence-http-netty</artifactId>
<version>12.2.1-4-0</version>
</dependency>
</dependencies>
必要なすべての依存性が自動的にダウンロードされます。ライブラリの完全なリストを表示するには、次のMavenコマンドを実行します。
mvn dependency:list
pom.xmlファイルの詳細は、Coherence RESTの例を参照してください。
親トピック: Coherence RESTの概要
Coherence RESTの構成の概要
ノート:
Coherence RESTをJavaEEサーバーにデプロイする場合、web.xmlファイルの構成も必要です。「Java EEサーバー(一般)へのデプロイ」を参照してください。
-
キャッシュ構成デプロイメント・ディスクリプタ – このファイルは、クライアント側のキャッシュ・サービスおよびHTTPアクセプタを定義するために使用します。HTTPアクセプタはHTTPを介してリモートRESTからの接続を受け入れます。アクセプタには、クライアントが接続するクラスタ側のHTTPサーバーのアドレスおよびポートが含まれます。このファイルのスキーマは、
coherence-cache-config.xsdファイルです。『Oracle Coherenceでのアプリケーションの開発』のhttp-acceptorに関する項を参照してください。実行時には、クラスパスで最初に検出されたキャッシュ構成ファイルが使用されます。
coherence.cacheconfigシステム・プロパティを使用して、キャッシュ構成ファイルを明示的に指定することもできます。このファイルは、プログラムによっても設定できます。Oracle Coherenceでのアプリケーションの開発のキャッシュ構成ファイルの指定を参照してください。 -
REST構成デプロイメント・ディスクリプタ - このファイルは、Jerseyリソース構成クラスおよびカスタム・アグリゲータおよびカスタム・エントリ・プロセッサを構成するために使用されます。ディスクリプタのデフォルト名は
coherence-rest-config.xmlで、スキーマはcoherence-rest-config.xsdファイルで定義されます。ファイルはクラスパス上に存在する必要があり、その名前はcoherence.rest.configシステム・プロパティを使用してオーバーライドできます。「RESTの構成要素」を参照してください。
親トピック: Coherence RESTの概要
データ・フォーマットのサポートの理解
この項には次のトピックが含まれます:
データ・フォーマットとしてのXMLの使用
XMLで参照されるオブジェクトは、キャッシュに保存されるために適切なJAXBバインディングを定義する必要があります。次の例では、JAXBバインディングを追加する注釈を使用するオブジェクトを作成します。
@XmlRootElement(name="Address")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Address implements Serializable{
private String street;
private String city;
private String country;
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
@XmlRootElement(name="Person")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Person implements Serializable {
private Long id;
private String name;
private Address address;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name = "address")
public Address getAddr() {
return address;
}
public void setAddr(Address addr) {
this.addr = addr;
}
}
親トピック: データ・フォーマットのサポートの理解
データ・フォーマットとしてのJSONの使用
JSONで参照されるオブジェクトは、キャッシュに保存されるために適切なJacksonバインディングまたはJAXBバインディングを定義する必要があります。デフォルトのCoherence REST JSONマーシャリング処理ではJacksonバインディングが優先されます。Jacksonバインディングが検出されない場合、JAXBバインディングがかわりに使用されます。Jackson注釈を使用することで、出力JSONフォーマットの制御性が向上します。ただし、XMLおよびJSONフォーマットの両方が必要な場合、JAXB注釈は両方のフォーマットに対して十分に使用できます。
次の例では、注釈を使用するオブジェクトを作成して、Jacksonバインディングを追加しています。
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include= JsonTypeInfo.As.PROPERTY,
property="@type")
public class Address implements Serializable {
private String street;
private String city;
private String country;
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include= JsonTypeInfo.As.PROPERTY,
property="@type")
public class Person implements Serializable {
private Long id;
private String name;
private Address address;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@JsonProperty("address")
public Address getAddr() {
return address;
}
public void setAddr(Address addr) {
this.addr = addr;
}
}
親トピック: データ・フォーマットのサポートの理解
Coherence RESTクライアントの認証と認可
親トピック: Coherence RESTの概要