先描述下系统调用关系:
1、存在A,B两个系统,A系统提供webserviceA服务,B系统提供webserviceB服务。2、调用过程:A系统调用webserviceB,webserviceB程序处理完成后,再反调webserviceA。目前的情况是,在反调webserviceA时,发现http头信息的IP信息只有A系统的地址,如下:Content-Type text/xml; charset=utf-8
SOAPAction ""
Host 192.168.1.1:17001(这个是服务器A的地址)
Content-Length 955
Expect 100-continue
Connection Keep-Alive
x-forwarded-for:null
Proxy-Client-IP:null
WL-Proxy-Client-IP:null请帮忙解答如何能获取到服务器B的地址,谢谢!附上获取IP的方法:public String getIp(MessageContext context) {
MessageContext mc =MessageContext.getCurrentContext();
HttpServletRequest request =
(HttpServletRequest) mc.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
1、存在A,B两个系统,A系统提供webserviceA服务,B系统提供webserviceB服务。2、调用过程:A系统调用webserviceB,webserviceB程序处理完成后,再反调webserviceA。目前的情况是,在反调webserviceA时,发现http头信息的IP信息只有A系统的地址,如下:Content-Type text/xml; charset=utf-8
SOAPAction ""
Host 192.168.1.1:17001(这个是服务器A的地址)
Content-Length 955
Expect 100-continue
Connection Keep-Alive
x-forwarded-for:null
Proxy-Client-IP:null
WL-Proxy-Client-IP:null请帮忙解答如何能获取到服务器B的地址,谢谢!附上获取IP的方法:public String getIp(MessageContext context) {
MessageContext mc =MessageContext.getCurrentContext();
HttpServletRequest request =
(HttpServletRequest) mc.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
解决方案 »
- 数组赋值问题,action后台处理,怎样传值????
- 开着服务器部署,一下沒弄好,Tomcat沒関就挂了,再启报错.启动不了,难道只能重装?
- 关于form中写action的问题
- 问一个关于dtree的问题,100分放送
- 求树的遍历
- java显示树形结构
- 急!!!请教各路英雄,<logic:equal>怎么用
- java.util.Properties; 库是什么啊?
- tomcat里运行jsp好像认不出系统设置的classpath?
- 急救!怎样实现在线人数统计!!!
- The server encountered an internal error () that prevented it from fulfilling th
- 关于java导出excel的问题
HttpServletRequest request = (HttpServletRequest)mc.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
String clientIp = request.getRemoteAddr();
这样不行吗
可是头信息里面只有服务器A的IP信息,这个方法获取的也是服务器A的IP。怎么才能在http头里面包含服务器的信息,我不清楚这两个系统的哪个地方着手
* 获取客户端IP地址,如调用方的IP,以便检查权限。
* 适用于axis发布的webservice
* @return
*/
public String getClientIpAxis() {
MessageContext mc = null;
HttpServletRequest request = null;
try {
mc = MessageContext.getCurrentMessageContext();
if (mc == null)
throw new Exception("无法获取到MessageContext");
request = (HttpServletRequest) mc
.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
System.out.println("remote ip: " + request.getRemoteAddr());
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
return request.getRemoteAddr();
} /**
* 获取客户端IP地址
* 适用于xfire发布的webservice
* @return
*/
public String getClientIpXfire() {
String ip = "";
try {
HttpServletRequest request = XFireServletController.getRequest();
ip = request.getRemoteAddr();
} catch (Exception e) {
System.out.println("无法获取HttpServletRequest.");
e.printStackTrace();
}
return ip;
}
如果是B系统做测试直接调用webserviceA时,该方法会获取服务器B的IP。
但是,现在是A调了B,B再调A,用你的方法获取的还是服务器A的IP。
我是使用的spring JaxRpcPortProxyFactoryBean配置的webservice,如何设置表头?
我是使用的spring JaxRpcPortProxyFactoryBean配置的webservice,如何设置表头?
我是使用的spring JaxRpcPortProxyFactoryBean配置的webservice,如何设置表头?