org.apache.camel.Processor获取源IP地址

时间:2014-05-15 07:41:57

标签: spring apache-camel

我有一个camelContext拦截器,它像这样调用一个处理器。你可以看到我的spring.xml here

import org.apache.camel.Processor;

public class CaptureProcessor implements Processor
{
    @Override
    public void process(Exchange exch) throws Exception
    {
            ....
    }    

是否可以在Exchange对象中找到客户端的源IP地址?

请注意,通过将Message body提取为HttpServerletRequest来查找IP地址的本文不适用,因为我的是一个简单的REST服务,并且没有实现serverlet。我的输入消息正文是一个字符串。

2 个答案:

答案 0 :(得分:0)

Camel交换包含来自请求的http标头。最好的方法是将标头转储到日志中,以找出您的特定代理设置,Web服务器等可用的内容。有几个标题字段可能存在也可能不存在,其中包含客户端的IP:X-Forwarded-ForX-Client-IPX-Real-IP

您可以像这样记录标题:

<camel:to uri="log:dump.headers?level=DEBUG&amp;showHeaders=true" />

答案 1 :(得分:0)

您可以使用属性X-forwarded-for在交换标头中提取 ip

String ip=exchange.getIn().getHeader("X-forwarded-for");