JAVA CXF、XFIRE、AXIS webservice获取客户端IP

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.WebServiceContext;

import org.apache.axis.MessageContext;
import org.apache.axis.transport.http.HTTPConstants;
import org.apache.cxf.transport.http.AbstractHTTPDestination;
import org.codehaus.xfire.transport.http.XFireServletController;

/**
 * @Author MH
 * @version 2011-12-2 上午09:31:49
 */

public class ClientIpXfire {

    @Resource
    private WebServiceContext context;

    /**
     * CXF获取客户端IP地址
     * 
     * @Author MH
     * @return
     */
    public String getClientIpCxf() {
        try {
            javax.xml.ws.handler.MessageContext ctx = context
                    .getMessageContext();
            HttpServletRequest request = (HttpServletRequest) ctx
                    .get(AbstractHTTPDestination.HTTP_REQUEST);
            String ip = request.getRemoteAddr();
            return ip;
        } catch (Exception e) {
            System.out.println("无法获取对方主机IP");
            e.printStackTrace();
            return null;
        }

    }

    /**
     * XFIRE获取客户端IP地址
     * 
     * @Author MH
     * @return
     */
    public static String getClientIpXfire() {
        String ip = null;
        try {
            HttpServletRequest request = XFireServletController.getRequest();
            ip = request.getRemoteAddr();
            return ip;
        } catch (Exception e) {
            System.out.println("无法获取对方主机IP");
            e.printStackTrace();
            return null;
        }
    }

    /**
     * AXIS获取客户端IP地址
     * 
     * @Author MH
     * @return
     */
    public static String getClientIpAxis() {
        try {
            MessageContext mc = MessageContext.getCurrentContext();
            HttpServletRequest request = (HttpServletRequest) mc
                    .getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
            System.out.println("remote ip: " + request.getRemoteAddr());
            return request.getRemoteAddr();
        } catch (Exception e) {
            System.out.println("无法获取对方主机IP");
            e.printStackTrace();
            return null;
        }

    }
}

猜你喜欢

转载自my.oschina.net/u/154628/blog/1570460