我的axis2放在tomcat里面,放在客户的外网服务器上. MessageContext mc = MessageContext.getCurrentMessageContext();
HttpServletRequest request = (HttpServletRequest) mc
.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
ip = request.getHeader("x-forwarded-for");
ip+=ip+"||||||" + request.getRemoteAddr();;
下面的返回的结果。奔溃啊。。理论上应该是外网ip才对啊..不管什么地址访问获得都是这个..<ns:getIp2Response xmlns:ns="http://service.totapps.com">
<ns:return>nullnull||||||192.168.255.58</ns:return>
</ns:getIp2Response>
aixs2 ip服务器JavaCSSTomcat

解决方案 »

  1.   

    显然只能得到服务器自己的地址。所以除非你的服务器是直接连接互联网,中间不经过任何路由、网关或防火墙设备,否则都是内网地址。
    x-forwarded-for 这个是代理服务器增加的信息,网络设备一般不懂得去增加这种信息。
      

  2.   

    判断下
    if (request.getHeader("x-forwarded-for") == null) {   
    ip=request.getRemoteAddr();  
    }  
    ip=request.getHeader("x-forwarded-for");  
    }   
      

  3.   


    request.getRemoteAddr()这样也得不到吗.
      

  4.   


    我是这样写的啊。可是返回的值却是...<ns:return>nullnull||||||192.168.255.58</ns:return>
      

  5.   


    这个可能会得到几种结果:
    1、代理服务器的IP地址,也包括反向代理、负载均衡设备;
    2、客户机所在网络的外网IP,当共享上网时;
    3、客户机的外网IP,当客户机直接ADSL上网时。
      

  6.   

    所以先搞清楚,你服务器的部署环境,也就是在你的Java应用服务器之前,还有哪些服务或或网络设备?然后再来帮你分析分析解法。
      

  7.   

    已经解决!解决办法: http://www.iteye.com/problems/89986