HttpServletRequest.getRemoteAddr()在rest资源中为null

时间:2018-02-08 16:57:37

标签: rest jersey glassfish-4.1

我有一个在glassfish 4.1中运行的后端REST应用程序。 在这个简单的测试资源中,我想记录远程地址:

import java.util.logging.Logger;
import javax.enterprise.context.RequestScoped;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;

@Path("test")
@RequestScoped
public class TestResource {

  private static final Logger LOG = Logger.getLogger(TestResource.class.getName());

  @Context
  private UriInfo context;

  public TestResource() {
  }

  @GET
  @Produces(MediaType.TEXT_PLAIN)
  public String getText(@Context HttpServletRequest req) {
    LOG.info("TEST - REMOTE ADDRESS: " + req.getRemoteAddr());
    throw new UnsupportedOperationException();
  }
}

我什么都没有"奇怪"并且没有代理(因此没有" x-forwarded-for"等等),但是当我访问资源时,我总是获取null作为远程地址。

我已经google了很多并尝试了不同的解决方案,但没有运气(即:实现过滤器不起作用:在过滤器request.getRemoteAddr()内部始终为null)。

0 个答案:

没有答案