画像レンダリングでは、正規式の一致と置換ルールに基づく単純なリクエスト前処理メカニズムがサポートされています。
事前処理ルールのコレクション(ルールセット)は、マテリアルカタログまたはデフォルトのカタログにアタッチできます。 デフォルトカタログのルールは、リクエストが特定の材料カタログをアタッチしない場合にのみ適用されます。
リクエストの事前処理ルールでは、パスの操作、コマンドの追加、コマンド値の変更、テンプレートやマクロの適用など、リクエストがサーバーのリクエストパーサーによって処理される前に、リクエストのパスとクエリの部分を変更できます。 ルールは、一部のカタログ属性の設定と上書き、サービスを特定のクライアントIPアドレスに制限する場合にも使用できます。
ルールセットは、XMLドキュメントファイルとして保存されます。 ルールセットファイルの相対パスまたは絶対パスをattribute::RuleSetFile
で指定する必要があります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ruleset SYSTEM" RuleSet.dtd">
<ruleset>
<rule>
<expression>
<varname>
expression
</varname></expression>
<substitution>
<varname>
substitution
</varname></substitution>
<addressfilter>
<varname>
addressFilter
</varname></addressfilter>
</rule>
</ruleset>
有効なルールセットXMLファイルでは、実際のルールが定義されていない場合でも、<?xml>
、<!DOCTYPE>
、<ruleset>
の要素が必ず必要です。
任意の数の<rule>
要素を含む<ruleset>
要素を1つだけ使用できます。
前処理ルールファイルの内容は、大文字と小文字が区別されます。
他の処理の前に、着信HTTPリクエストが部分的に解析され、適用する材料カタログが決定されます。 カタログが識別されると、選択したカタログ(または特定のカタログが識別されなかった場合はデフォルトのカタログ)のルールセットが適用されます。
<rule>
要素は、<expression>
要素(expression
)の内容と一致するように指定された順に検索されます。
<rule>
が一致した場合は、オプションのsubstitution
が適用され、変更された要求文字列がサーバーの要求パーサーに渡され、通常の処理が行われます。
<ruleset>
の終わりに達したときに一致が見つからなかった場合、リクエストは変更されずにパーサーに渡されます。
デフォルトの動作は、<rule>
要素のOnMatch
属性を使用して変更できます。 OnMatch
は、 break
(デフォルト)、 continue
または error.
要素と属性 |
一致が発生した場合の動作 |
---|---|
<rule OnMatch="break"> |
ルールの処理は、このルールの置き換えが適用された直後に終了します。 初期設定. |
<rule OnMatch="continue"> |
置換が適用され、処理は次のルールで続行されます。 |
<rule OnMatch="error"> |
ルール処理はすぐに終了し、「リクエストが拒否されました」という応答ステータスがクライアントに返されます。 |
<rule>
の要素では、ルールが適切に一致し、設定された場合に、対応するカタログ属性を上書きする属性を任意 OnMatch="break"
で定義できます。OnMatch="continue"
が設定されている場合、属性は適用されません。 ルールで制御できる属性のリストについては、<rule>
の説明を参照してください。
単純な文字列の一致は非常に基本的なアプリケーションで機能しますが、通常の式は必須です。 正規式は業界標準ですが、具体的な実装はインスタンスによって異なります。
パッケージjava.util. regexでは、画像サービングで使用される具体的な正規式の実装を説明します。
複雑なURLの変更を容易にするために、サブ文字列を丸括弧(…)で囲むことで、式内でサブ文字列を取り込むことができます。 取り込んだサブ文字列には、先頭の括弧の位置に従って、1から順に連番が付けられます。 $n
を使用して、捕捉したサブ文字列を置換に挿入できます。n
は、捕捉したサブ文字列のシーケンス番号です。
カタログ属性attribute::RuleSetFile
を持つ各マテリアルカタログには、1つのルールセットファイルをアタッチできます。 ルールセットファイルはいつでも編集できますが、Image Serverは、関連付けられたマテリアルカタログが再読み込みされた場合にのみ変更を認識します。 これは、プラットフォームサーバーが起動または再起動されたときや、(.iniファイルのサフィックスを持つ)プライマリカタログファイルが変更されたり、(ファイルの日付を変更するために)「タッチ」されたときに起こります。
ルールセットの例は、画像サービングのドキュメントの画像カタログ参照の対応する節に記載されています。