webservice 获取客户端Id 报空指针异常
网络上很多文章都是这样配的:
@Resource
private WebServiceContext wscontext;
public String getIP(){
MessageContext ctx = wscontext.getMessageContext();
HttpServletRequest request = (HttpServletRequest)ctx.ge(AbstractHTTPDestination.HTTP_REQUEST);
return request.getRemoteAddr();
}
但是在我测试的过程中,MessageContext ctx = wscontext.getMessageContext();
这行代码无论怎么修改都报错,报空指针异常,
耗时一天皇天不负苦心人,经测试完全有效,分享给大家:
包有四个:
import javax.servlet.http.HttpServletRequest;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.PhaseInterceptorChain;
import org.apache.cxf.transport.http.AbstractHTTPDestination;
代码:
Message message = PhaseInterceptorChain.getCurrentMessage();
HttpServletRequest httprequest = (HttpServletRequest)message.get(AbstractHTTPDestination.HTTP_REQUEST);
System.out.println(httprequest.getRemoteAddr());
下面是一个小案例, ip为内网其他电脑远程访问的
![](https://img-blog.csdnimg.cn/20200728102822555.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDAzOTEwNQ==,size_16,color_FFFFFF,t_70)