27.3. ローカルのサーバー側応答キャッシュ
RESTEasy は、 JAX-RS サービスに対するローカルのサーバー側インメモリキャッシュを持っています。 JAX-RS リソースメソッドが
Cache-Control ヘッダを設定する場合、 HTTP GET JAX-RS 呼び出しからマーシャリングされた応答を自動的にキャッシュします。 GET が受信されると、 URI がキャッシュに保存されたかを RESTEasy サーバーキャッシュが確認します。 true の場合、 マーシャリングされた応答は JAX-RS メソッドを呼び出さずに返されます。 各キャッシュエントリには、 初期要求の Cache-Control ヘッダにある仕様が有効になる 最大期間 があります。 また、 キャッシュは応答ボディ上の MD5 ハッシュを使用して ETag も自動的に生成します。 これにより、 クライアントは IF-NONE-MATCH ヘッダで HTTP 1.1 キャッシュ再検証を実行できます。 最初のキャッシュヒットがない場合でもキャッシュは再検証を実行しますが、 JAX-RS メソッドは同じ ETag を持つボディを返します。
Maven でサーバー側のキャッシュを設定するには、
resteasy-cache-core アーティファクトを使用しなければなりません。
次に、
ServletContextListener である org.jboss.resteasy.plugins.cache.server.ServletServerCache を追加します。 web.xml ファイルの ResteasyBootstrap リスナの後にこれを指定する必要があります。
キャッシュの実装は JBoss Cache project を基にしています。 2 つの
context-param 設定変数を設定することができます。 resteasy.server.cache.maxsize はキャッシュできるエレメント数を設定します。 resteasy.server.cache.eviction.wakeup.interval は、 陳腐化したエントリのキャッシュを削除するためバックグラウンドの排除スレッドを実行する割合を設定します。