如何获取Web服务客户端的IP地址?

时间:2017-05-09 14:51:52

标签: java

我使用Eclipse(luna),Tomcat8和Axis2创建了一个Web服务。为此,我用Java编写了一个类' AddOperator'将服务定义如下:

public class AddOperator {
    public int add(int x,int y) {
        return x+y;
    }
}

我还创建了一个客户端,他使用“AddClientOpp'”类来构建此服务。如下:

public class AddClientOpp {
    public static void main(String[] args) throws RemoteException  {
        AddOperatorStub stub = new AddOperatorStub();

        Add add = new Add();
        add.setX(25);
        add.setY(30);

        System.out.println(stub.add(add).get_return());
    }
}  

现在,我需要获取客户的IP地址,以便我的网络服务。我搜索并找到了一些允许这样做的方法和部分代码,例如:

import javax.servlet.http.HttpServletRequest;

//...

private static String getClientIp(HttpServletRequest request) {
    String remoteAddr = "";

    if (request != null) {
        remoteAddr = request.getHeader("X-FORWARDED-FOR");
        if (remoteAddr == null || "".equals(remoteAddr)) {
            remoteAddr = request.getRemoteAddr();
        }
    }
    return remoteAddr;
}

或:

import java.net.*;
import java.io.*;
import java.applet.*;

public class GetClientIP extends Applet {
    public void init() {
        try {
           InetAddress Ip =InetAddress.getLocalHost();
           System.out.println("IP:"+Ip.getHostAddress());
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

但是我不知道将这些代码部分或方法集成到上面描述的我的Web服务创建过程中的位置!!

如果有人对此有所了解,请告诉我我该做什么。这对我的项目来说非常重要!!

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码检索客户端地址:

MessageContext.getCurrentMessageContext().getProperty(MessageContext.REMOTE_ADDR)