Tôi đang sử dụng mã sau đây để có được địa chỉ IP của khách hàng cho một JAX-WS một chiều gọi phương thức:cách đáng tin cậy để có được địa chỉ IP của khách hàng trong CXF JAX-WS một chiều gọi phương thức
protected HttpServletRequest getServletRequest() {
MessageContext ctx = wsContext.getMessageContext();
return (HttpServletRequest) ctx.get(MessageContext.SERVLET_REQUEST);
}
protected synchronized String getClientIp() {
String clientIp = "";
HttpServletRequest request = getServletRequest();
if (request != null) {
clientIp = request.getRemoteAddr();
// Handle proxy
String header = request.getHeader("x-forwarded-for");
if(header != null && !header.isEmpty()) {
clientIp = header.split(",")[0];
}
}
return clientIp;
}
Khi nhiều khách hàng kết nối, địa chỉ IP được truy lục cho một yêu cầu đôi khi là giá trị được lưu vào bộ nhớ cache không chính xác từ một yêu cầu trước đó. Cách đáng tin cậy để nhận địa chỉ IP của người khởi tạo cuộc gọi một chiều là gì?
tôi sẽ xem xét thông qua WS-Addressing nếu nó có thể giúp đỡ. Tôi đang sử dụng cxf-2.5.2 chạy trên tomcat-6.0.35. – amo