通过 @Resource 注入 WebServiceContext 对象,再从 WebServiceContext 对象中使用 getMessageContext() 获得 MessageContext 对象,再使用:
ServletRequest request = (ServletRequest)messageContext.get(MessageContext.HTTP_Request);
上面这些虽然是 Java EE 5/JAX-WS 2.0 中的方式,我看了一下 JAX-WS 2.1 中也可以使用的,你试试看。
所用的接口、Annotation 完整名称为:
@Resource: javax.annotation.Resource
WebServiceContext: javax.xml.ws.WebServiceContext
MessageContext: javax.xml.ws.handler.MessageContext
ServletRequest: javax.servlet.ServletRequest
@Resource
private WebServiceContext wsContext;
方法中
MessageContext mc = wsContext.getMessageContext();
HttpServletRequest request = (HttpServletRequest)(mc.get(mc.SERVLET_REQUEST));
String remortAddress = request.getRemoteAddr();
System.out.println(remortAddress);
1.基于jax-ws开发的webservice获取客户端ip的方法【在代理类XXXDelegate添加如下代码】:
Java代码
1.import javax.annotation.Resource;
2.import javax.servlet.http.HttpServletRequest;
3.import javax.xml.ws.WebServiceContext;
4.import javax.xml.ws.handler.MessageContext;
5.
6.@Resource
7.private WebServiceContext wsContext;
8.
9.private String getClientInfo(){
10.
11.MessageContext mc = wsContext.getMessageContext();
12.HttpServletRequest request = (HttpServletRequest)(mc.get(MessageContext.SERVLET_REQUEST));
13.String remortAddress = request.getRemoteAddr();
14.return (remortAddress);
15.}
2.基于axis发布的webservice获取客户端ip的方法
Java代码
import org.apache.axis.MessageContext;
import org.apache.axis.transport.http.HTTPConstants;
import javax.servlet.http.HttpServletRequest;
1./**
2. * 获取客户端IP地址,如调用方的IP,以便检查权限。
3. * 适用于axis发布的webservice
4. * @return
5. */
6. public String getClientIpaxis() {
7. MessageContext mc = null;
8. HttpServletRequest request = null;
9. try {
10. mc = MessageContext.getCurrentMessageContext();
11. if (mc == null)
12. throw new Exception(“无法获取到MessageContext”);
13. request = (HttpServletRequest) mc
14. .getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
15. System.out.println(“remote ip: ” + request.getRemoteAddr());
16. } catch (Exception e) {
17. System.out.println(e.getMessage());
18. e.printstacktrace();
19. }
20. return request.getRemoteAddr();
21. }
3.基于xfire发布的webservice获取客户端ip的方法
Java代码 1./** 2. * 获取客户端IP地址 3. * 适用于xfire发布的webservice 4. * @return 5. */ 6. public String getClientIpXfire() { 7. String ip = “”; 8. try { 9. HttpServletRequest request = XFireServletController.getRequest(); 10. ip = request.getRemoteAddr(); 11. } catch (Exception e) { 12. System.out.println(“无法获取HttpServletRequest.”); 13. e.printstacktrace(); 14. } 15. return ip; 16. }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。