8.5.7. リモート EJB データ圧縮
これまでのバージョンの JBoss EAP には、EJB プロトコルメッセージが含まれるメッセージストリームを圧縮できる機能が含まれていました。この機能は JBoss EAP 6.3 以降に含まれています。
圧縮は現在、クライアントおよびサーバー側にあるべき EJB インターフェース上のアノテーションでのみ指定できます。現在、圧縮ヒントを指定するのと同等の XML はありません。
データ圧縮のヒントは、JBoss アノテーションを介して指定できます
org.jboss.ejb.client.annotation.CompressionHint
。ヒントの値では、リクエスト、応答、要求、応答を圧縮するかどうかを指定します。@CompressionHint
デフォルトをcompressResponse=true
と compressRequest=true
に追加。
アノテーションはインターフェースレベルで指定して、以下のように EJB のインターフェース内のすべてのメソッドに適用できます。
import org.jboss.ejb.client.annotation.CompressionHint; @CompressionHint(compressResponse = false) public interface ClassLevelRequestCompressionRemoteView { String echo(String msg); }
また、アノテーションは EJB のインターフェースにある特定のメソッドに適用できます。以下に例を示します。
import org.jboss.ejb.client.annotation.CompressionHint; public interface CompressableDataRemoteView { @CompressionHint(compressResponse = false, compressionLevel = Deflater.BEST_COMPRESSION) String echoWithRequestCompress(String msg); @CompressionHint(compressRequest = false) String echoWithResponseCompress(String msg); @CompressionHint String echoWithRequestAndResponseCompress(String msg); String echoWithNoCompress(String msg); }
上記の
compressionLevel
設定は、以下の値にすることができます。
- BEST_COMPRESSION
- BEST_SPEED
- DEFAULT_COMPRESSION
- NO_COMPRESSION
CompressionLevel
のデフォルト設定は Deflater.DEFAULT_COMPRESSION
です。
メソッドレベルでのクラスレベルのアノテーションの上書き:
@CompressionHint public interface MethodOverrideDataCompressionRemoteView { @CompressionHint(compressRequest = false) String echoWithResponseCompress(final String msg); @CompressionHint(compressResponse = false) String echoWithRequestCompress(final String msg); String echoWithNoExplicitDataCompressionHintOnMethod(String msg); }
クライアント側で、
org.jboss.ejb.client.view.annotation.scan.enabled
システムプロパティーが true
に設定されていることを確認します。このプロパティーは JBoss EJB Client に対してアノテーションをスキャンするように指示します。