5.3. 远程 Jakarta Enterprise Beans 数据压缩

您可以压缩包含 Enterprise Beans 协议消息的消息流

注意

目前,压缩只能通过在 Jakarta Enterprise Beans 接口上的注释指定,该界面应该位于客户端和服务器端。当前没有与指定压缩提示相同的 XML。

数据压缩提示可以通过 JBoss 注释 org.jboss.ejb.client.annotation.CompressionHint 指定。hint 值指定是压缩请求、响应还是请求和响应。添加 @CompressionHint 默认为 compressResponse=truecompressRequest=true.

该注解可以在接口级别指定,以应用到 Jakarta Enterprise Beans 接口中的所有方法,例如:

import org.jboss.ejb.client.annotation.CompressionHint;

@CompressionHint(compressResponse = false)
public interface ClassLevelRequestCompressionRemoteView {
    String echo(String msg);
}

或者注解可应用于 Jakarta Enterprise Beans 接口中的特定方法,例如:

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 Jakarta Enterprise Beans 客户端扫描注释。