如何在Squid中使用Java ICAP编解码器

时间:2012-01-21 12:36:47

标签: java squid

我正在尝试使用Java ICAP Codec 1.0.0.GA与Squid的Squid Echo示例并获得以下异常

ch.mimo.netty.handler.codec.icap.IcapDecodingError: Mandatory ICAP message header [Encapsulated] is missing
    at ch.mimo.netty.handler.codec.icap.ReadIcapHeaderState.validateMandatoryMessageHeaders(ReadIcapHeaderState.java:104)
    at ch.mimo.netty.handler.codec.icap.ReadIcapHeaderState.execute(ReadIcapHeaderState.java:54)
    at ch.mimo.netty.handler.codec.icap.IcapMessageDecoder.decode(IcapMessageDecoder.java:97)
    at ch.mimo.netty.handler.codec.icap.IcapMessageDecoder.decode(IcapMessageDecoder.java:37)
    at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:470)
    at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:443)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)

这是我的Squid配置(与ICAP相关):

icap_enable on
icap_service service_req reqmod_precache icap://127.0.0.1:1344
adaptation_access service_req allow all

有什么问题?

1 个答案:

答案 0 :(得分:1)

众所周知,Squid的ICAP客户端不会向选项请求添加Encapsulated Header。 Java ICAP Codec的最新1.0.0.GA版本将处理选项,并且100个继续请求将丢失Encapsulated头。

我建议您使用Wireshark转储网络流量并将其发布到此处。