5.3. 远程 EJB 数据压缩
以前版本的 JBoss EAP 包含一项功能,其中可以压缩包含 EJB 协议消息的消息流。此功能已包含在 JBoss EAP 6.3 及更高版本中。
目前,压缩只能通过 EJB 接口上的注释来指定,该注释应在客户端和服务器端。当前没有与指定压缩提示相同的 XML。
数据压缩提示可以通过 JBoss 注释 org.jboss.ejb.client.annotation.CompressionHint 指定。hint 值指定是压缩请求、响应还是请求和响应。添加 @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 客户端扫描注释。