0
回答
jdk1.6 webservice 如何获取客户端IP地址?
如题,在网上查了,除了如下方法外,未找到其它获取客户端IP地址的办法。 
而下面的代码获取到的 request为null, 
MessageContext mc = context.getMessageContext();  
HttpServletRequest request = (HttpServletRequest) (mc.get(MessageContext.SERVLET_REQUEST));  
remortAddress = request.getRemoteAddr();  

 MessageContext是 一个Map ,我遍历所有的结果后,发现没有MessageContext.SERVLET_REQUEST 所对应的Key。 
,并且里面很多信息均为Null。 
for (Entry<String, Object> e : mc.entrySet()) {  
    Object obj = e.getValue();  
    System.out.println(e.getKey() + " \t" + obj);  
}

输入结果为:
javax.xml.ws.wsdl.port  {http://www.baidu.com}queryServicePort  
javax.xml.ws.soap.http.soapaction.uri   ""  
com.sun.xml.internal.ws.server.OneWayOperation  null  
javax.xml.ws.http.request.pathinfo  null  
com.sun.xml.internal.ws.api.message.packet.outbound.transport.headers   com.sun.net.httpserver.Headers@0  
javax.xml.ws.reference.parameters   []  
com.sun.xml.internal.ws.client.handle   null  
javax.xml.ws.wsdl.service   {http://www.baidu.com}queryService  
javax.xml.ws.http.request.headers   sun.net.httpserver.UnmodifiableHeaders@4a3ac897  
com.sun.xml.internal.ws.http.exchange   sun.net.httpserver.HttpExchangeImpl@1a12495  
com.sun.xml.internal.ws.api.server.WSEndpoint   com.sun.xml.internal.ws.server.WSEndpointImpl@e64686  
javax.xml.ws.http.response.code       
javax.xml.ws.http.request.querystring   null  
javax.xml.ws.wsdl.interface     {http://www.baidu.com}queryService  
com.sun.xml.internal.ws.handler.config  null  
javax.xml.ws.http.response.headers  com.sun.net.httpserver.Headers@0  
javax.xml.ws.service.endpoint.address   null  
com.sun.xml.internal.ws.api.message.HeaderList  []  
com.sun.xml.internal.ws.client.ContentNegotiation   null  
com.sun.xml.internal.ws.api.message.packet.inbound.transport.headers    sun.net.httpserver.UnmodifiableHeaders@4a3ac897  
javax.xml.ws.http.request.method    POST

即里面,只有几个Key有对象有结果,很多没有结果。 
而MessageContext.SERVLET_REQUEST对应的值javax.xml.ws.servlet.request并未存在MessageContext中。 
那么我需要的客户端IP地址在什么位置呢? 

我打印出如下Key对应的结果集,发现只有发布服务的IP地址,并未见客户端IP地址。
javax.xml.ws.http.request.headers  
com.sun.xml.internal.ws.api.message.packet.inbound.transport.headers  
javax.xml.ws.http.response.headers  
com.sun.xml.internal.ws.api.message.packet.outbound.transport.headers 

发布的方式为 
Endpoint.publish("http://127.0.0.1:8083/queryService", new QueryService()); 

我用的是 JDK1.6.0_23 

难道是我的方法用错了?还是有其它的方法解决,目前为止未获取客户端的IP地址。 
求高人给予解答……
举报
井底之蛙_H
发帖于7年前 0回/1K+阅
顶部