Java 如何在ContainerRequestFilter中获取远程IP

Java 如何在ContainerRequestFilter中获取远程IP,java,rest,jersey,Java,Rest,Jersey,我有这个类,希望记录rest请求: public class RequestFilter implements ContainerRequestFilter { private static final Logger LOG = LoggerFactory.getLogger(RequestFilter.class); @Override public void filter(ContainerRequestContext requestContext) throws

我有这个类,希望记录rest请求:

public class RequestFilter implements ContainerRequestFilter {

    private static final Logger LOG = LoggerFactory.getLogger(RequestFilter.class);

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {
        LOG.info("REST-Request from '{}' for '{}'", "XXX", requestContext.getUriInfo().getPath());
        // ... and do some auth stuff (not relevant for this question)
    }
}
如何获取请求的远程IP?蒂亚

试试这个:

public class RequestFilter implements ContainerRequestFilter {

    private static final Logger LOG = LoggerFactory.getLogger(RequestFilter.class);

    @Context
    private HttpServletRequest request;

    // rest of your stuff here

一个迟来的答复,但这可能有助于其他人使用灰熊2

import javax.servlet.http.HttpServletRequest;
import org.glassfish.grizzly.http.server.Request;

public class RequestFilter implements ContainerRequestFilter {

    private static final Logger LOG = LoggerFactory.getLogger(RequestFilter.class);

    @Context
    private HttpServletRequest httpServletRequest;

    @Inject
    private Provider<Request> grizzlyRequest;

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {
        String remoteIpAddress;
        if (httpServletRequest != null) {
            // JSR-315/JSR-339 compliant server
            remoteIpAddress = httpServletRequest.getRemoteAddr();
        } else {
            // Grizzly2 server
            remoteIpAddress = grizzlyRequest.get().getRemoteAddr();
        }
import javax.servlet.http.HttpServletRequest;
导入org.glassfish.grizzly.http.server.Request;
公共类RequestFilter实现ContainerRequestFilter{
私有静态最终记录器LOG=LoggerFactory.getLogger(RequestFilter.class);
@上下文
私有HttpServletRequest HttpServletRequest;
@注入
私人提供商grizzlyRequest;
@凌驾
公共无效筛选器(ContainerRequestContext requestContext)引发IOException{
字符串远程IP地址;
if(httpServletRequest!=null){
//JSR-315/JSR-339兼容服务器
remoteIpAddress=httpServletRequest.getRemoteAddr();
}否则{
//Grizzly2服务器
remoteIpAddress=grizzlyRequest.get().getRemoteAddr();
}

如果我让Guice打针,我会怎么做?Jersey 2.0的哪个版本可以工作?
2.25.1
对我不起作用。Jersey 2.0的哪个版本可以工作?
2.25.1
对我不起作用。我使用的是Jersey 2.19和Grizzly 2.3.22。