即使“java.net.preferIPv4Stack”为“true”,Jersey也会返回IPv6地址

时间:2013-09-26 02:14:30

标签: java jersey ip ipv6 ipv4

Jersey返回一个IPv6地址,即使在以下代码中我将Java属性java.net.preferIPv4Stack显式设置为true,而我想检索IPv4地址:

@Path("/getip")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_PLAIN)
public class PublicIp {

    @GET
    public Response getPublicIp(@Context HttpServletRequest req) {
        System.setProperty("java.net.preferIPv4Stack" , "true");
        String address = req.getRemoteAddr();
        return Response.ok(address).build();
    }
}

如果在本地使用,则返回0:0:0:0:0:0:0:1。如何强制Jersey返回IPv4格式?

1 个答案:

答案 0 :(得分:0)

尝试将其传递给JVM:

-Djava.net.preferIPv4Stack=true

在启动时,而不是在方法中将其设置为系统属性以获取IP。