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