Reputation: 3329
I have this class and wants to log the rest-requests:
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)
}
}
How do do I get the remote IP of the request? TIA!
Upvotes: 5
Views: 6964
Reputation: 691
A late reply, but this may help others using Grizzly2 ...
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();
}
Upvotes: 4
Reputation: 2096
Try this:
public class RequestFilter implements ContainerRequestFilter {
private static final Logger LOG = LoggerFactory.getLogger(RequestFilter.class);
@Context
private HttpServletRequest request;
// rest of your stuff here
Upvotes: 13