Delphi: como registrar o filtro ZlibCompression em um servidor DataSnap-XE
Pergunta
PROBLEMA:
Estou usando um filtro ZLibCompression no servidor DataSNAP-XE.
O cliente sempre dá o erro a seguir a mensagem:
"Borland.data.tdbxerror: o filtro de comunicação ZlibCompression não está registrado. A classe de filtro precisa ser registrada para se comunicar com o servidor"
QUESTÃO 1
Como faço para registrar o filtro ZlibCompression?
EDITAR
QUESTÃO 2
Como faço para obter a conexão de dados do DataSNAP no DataExplorer para vincular a este servidor?
Solução
Basta adicionar o DbxCompressionFilter
unidade para a cláusula de uso do cliente (como também discutido no meu manual de cursos Delphi Xe DataSNAP, e acredito que também está no antigo DataSnap White Paper que escrevi no ano passado).
A unidade DBXCompressionFilter já contém o seguinte código:
initialization
TTransportFilterFactory.RegisterFilter(TTransportCompressionFilter);
finalization
TTransportFilterFactory.UnregisterFilter(TTransportCompressionFilter);
end.
Outras dicas
Ligue para o método TTransportFilterFactory.RegisterFilter para registrar um filtro.
Documentação (Filtrando DataSnap) diz:
Um filtro precisa ser registrado no TTransportFilterFactory Singleton. A maneira recomendada de registrar um filtro é através das seções de inicialização e finalização da unidade, mas pode ser codificada através de uma fase de inicialização no aplicativo do usuário. Abaixo está o snippet de código que registra o filtro de compressão disponível na caixa:
initialization
TTransportFilterFactory.RegisterFilter(TTransportCompressionFilter);
finalization
TTransportFilterFactory.UnregisterFilter(TTransportCompressionFilter);
Altere o TTANSPORTCOMPRESSFILTER para o nome da classe que você está usando para filtrar.