WebSphere Application Server Version 6.1 Feature Pack for Web Services   
             オペレーティング・システム: AIX , HP-UX, i5/OS, Linux, Solaris, Windows, Windows Vista, z/OS

             目次と検索結果のパーソナライズ化

例: Web サービスのキャッシュ

このトピックには、Web サービス・アプリケーション用のキャッシュ・ポリシーの集合と SOAP メッセージを作成する例が含まれています。

以下に示すのは、簡単な Web サービス・アプリケーション用にキャッシュ・ポリシーの集合を作成する例です。 この例におけるアプリケーションは、 株価情報を保管し、指定された株式銘柄の価格を読み取って更新したり、 その銘柄の株式を買ったりするオペレーションを行います。

以下に示すのは、付随する HTTP 要求ヘッダーを使用してアプリケーションが受信できる 2 つの SOAP メッセージ例です。

最初のメッセージ・サンプルには、GetQuote オペレーションの SOAP メッセージが含まれ、 IBM の株価を要求しています。 これは、データをバックエンドから取得する読み取り専用オペレーシ ョンであり、キャッシュの良い候補です。 この例では、SOAP メッセージがキャッシュに入れられ、タイムアウトがエントリーに配置されて、 それによって戻される株価が現行のものであるようにしています。

メッセージ例 1
POST /soap/servlet/soaprouter
HTTP/1.1
Host: www.myhost.com
Content-Type: text/xml; charset="utf-8"
SOAPAction: urn:stockquote-lookup
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:getQuote xmlns:m="urn:stockquote">
<symbol>IBM</symbol>
</m:getQuote>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
要求の中の SOAPAction HTTP ヘッダーは、SOAP 仕様で定義され、 HTTP プロキシー・サーバーによって使用されて、要求を特定の HTTP サーバーにディスパッチします。 WebSphere Application Server の動的キャッシュは、このヘッダーをキャッシュ・ポリシーの中で使用して、 SOAP メッセージの構文解析を行うことなく ID を作成できます。

メッセージ例 2 は、BuyQuote オペレーションの SOAP メッセージを説明しています。 メッセージ 1 がキャッシュ可能なのに対して、このメッセージは、バックエンド・データベースを更新するので、 キャッシュ可能ではありません。

メッセージ例 2
POST /soap/servlet/soaprouter
HTTP/1.1
Host: www.myhost.com
Content-Type: text/xml; charset="utf-8"
SOAPAction: urn:stockquote-update
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:buyStock xmlns:m="urn:stockquote">
<symbol>IBM</symbol>
</m:buyStock>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

次の図は、SOAP メッセージを使用してメソッドを呼び出す方法を示しています。 Web サービスの用語、特に Web Service Definition Language (WSDL) では、 サービスとは、getQuote や buyStock などのオペレーションの集合のことです。 本文エレメントのネーム・スペース (例では urn:stockquote) はサービスを定義し、最初の本文エレメントの名前はオペレーションを示しています。
SOAPmessages:caching によるメソッドの呼び出し

以下に示すのは、getQuote オペレーションの WSDL の例です。
<?xml version="1.0"?>
<definitions name="StockQuoteService-interface"
targetNamespace="http://www.getquote.com/StockQuoteService-interface"
xmlns:tns="http://www.getquote.com/StockQuoteService-interface"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns=soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
<message name="SymbolRequest">
<part name="return" type="xsd:string"/>
</message>
<portType name="StockQuoteService">
<operation name="getQuote">
<input message="tns:SymbolRequest"/>
<output message="tns:QuoteResponse"/>
</operation>
</portType>
<binding name="StockQuoteServiceBinding"
type="tns:StockQuoteService">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getQuote">
<soap:operation soapAction="urn:stockquote-lookup"/>
		<input>
<soap:body use="encoded" namespace="urn:stockquote"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
		</input>
<output>
<soap:body use="encoded" namespace="urn:stockquotes"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
</definition>
Web サービス・アプリケーション用にキャッシュ・ポリシーの集合を作成するには、 オペレーション内のキャッシュ可能サービス・オペレーションを認識する WebSphere Application Server 動的キャッシュを構成します。

WebSphere Application Server は、HTTP 要求を検査して、 アプリケーション用に定義されたキャッシュ・ポリシーに基づいて着信メッセージをキャッシュできるかどうかを判別します。この例では、buyStock および stock-update はキャッシュされず、stockquote-lookup がキャッシュされます。 この Web アプリケーションの cachespec.xml ファイルでは、 動的キャッシュが SOAPAction とサービス・オペレーションを両方とも処理できるように、 キャッシュ・ポリシーはこれらのサービスに対する定義を必要とします。

WebSphere Application Server は、オペレーションおよびメッセージ本文を Web サービス・キャッシュ ID の中で使用します。 これらのキャッシュ ID はそれぞれ、オペレーションおよびメッセージ本文と関連付けられたコンポーネントを持っています。 したがって、個々の Web サービス <cache-id> ルールには、 コンポーネントが 2 つだけ含まれています。 最初のコンポーネントはオペレーション用です。 ユーザーは、SOAPAction ヘッダーまたはサービス・オペレーションを本文の中で使用することによって stockquote-lookup オペレーションを実行できるため、 2 つの異なる <cache-id> エレメント (それぞれの方法に 1 つずつ) を定義する必要があります。 2 番目のコンポーネントは、「本文」タイプであり、 どのように WebSphere Application Server がメッセージ本文をキャッシュ ID に取り込むかを定義します。 本文のハッシュを使用することができますが、リテラル着信メッセージを ID の中で使用してもかまいません。

着信 HTTP 要求は、どちらの <cache-id> ルールが適合するかを判別するために、 WebSphere Application Server によって解析されます。 次に、キャッシュまたは無効化 ID を作成するためにこれらのルールが適用されます。

以下に示すのは、 SOAPAction および servicesOperation ルールを定義する cachespec.xml ファイルのサンプル・コードです。
<cache>
<cache-entry>
	<class>webservice</class>
	<name>/soap/servlet/soaprouter</name>
		<sharing-policy>not-shared</sharing-policy>
	<cache-id>
<component id="" type="SOAPAction">
<value>urn:stockquote-lookup</value>
		</component>
<component id="Hash" type="SOAPEnvelope"/>
			<timeout>3600</timeout>
			<priority>1<priority>
		</component>
	</cache-id>
	<cache-id>
<component id="" type="serviceOperation">
<value>urn:stockquote:getQuote</value>
		</component>
<component id="Hash" type="SOAPEnvelope"/>
			<timeout>3600</timeout>
	<priority>1</priority>
		</component>
	</cache-id>
</cache-entry></cache>



関連タスク
タスクの概説: 動的キャッシュ・サービスの使用によるパフォーマンスの向上
参照トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 4:10:06 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ae/rdyn_webservicescaching.html