Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

8.5.7. リモート EJB データ圧縮

これまでのバージョンの JBoss EAP には、EJB プロトコルメッセージが含まれるメッセージストリームを圧縮できる機能が含まれていました。この機能は JBoss EAP 6.3 以降に含まれています。
圧縮は現在、クライアントおよびサーバー側にあるべき EJB インターフェース上のアノテーションでのみ指定できます。現在、圧縮ヒントを指定するのと同等の XML はありません。
データ圧縮のヒントは、JBoss アノテーションを介して指定できますorg.jboss.ejb.client.annotation.CompressionHint。ヒントの値では、リクエスト、応答、要求、応答を圧縮するかどうかを指定します。@CompressionHint デフォルトをcompressResponse=truecompressRequest=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 に対してアノテーションをスキャンするように指示します。