编程语言
首页 > 编程语言> > java-如何在Spring集成中获取发件人IP地址?

java-如何在Spring集成中获取发件人IP地址?

作者:互联网

我使用Spring集成进行Web服务消息处理.不幸的是,消息中没有发送者的IP地址.我如何获得此信息?

@Bean
public SimpleWebServiceInboundGateway myInboundGateway() {
    SimpleWebServiceInboundGateway simpleWebServiceInboundGateway = new SimpleWebServiceInboundGateway();
    simpleWebServiceInboundGateway.setRequestChannelName("testChannel");
    simpleWebServiceInboundGateway.setReplyChannelName("testResponseChannel");
    return simpleWebServiceInboundGateway;
}

@ServiceActivator(inputChannel = "testChannel", outputChannel = "testResponseChannel")
public Message getHeaders(Message message) {
    // how can I reach the sender IP address here
    return message;
}

解决方法:

默认情况下,SimpleWebServiceInboundGateway不会映射传输头.
请参见DefaultSoapHeaderMapper.
当然,您可以实现自己的实现,但这实际上足以让您使用:

((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
              .getRequest()
              .getRemoteAddr();

在那你的目标@ServiceActivator.

如果您在服务激活器之前不将消息转移到其他线程,那当然可以. RequestContextHolder.currentRequestAttributes()与ThreadLocal绑定在一起.

标签:spring,java,spring-integration
来源: https://codeday.me/bug/20191118/2027585.html