Je le RequestEventListener suivant à Jersey 2,26:Get Demande IP à Jersey Demande d'événement Listener
package com.myapp.webservice;
import org.glassfish.grizzly.http.server.Request;
import org.glassfish.jersey.server.monitoring.RequestEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.ws.rs.core.Context;
public class RequestEventListener implements org.glassfish.jersey.server.monitoring.RequestEventListener {
private static final Logger logger = LoggerFactory.getLogger(RequestEventListener.class);
private final long startTime;
@Context
private javax.inject.Provider<Request> request;
RequestEventListener() {
startTime = System.currentTimeMillis();
}
@Override
public void onEvent(RequestEvent requestEvent) {
switch(requestEvent.getType()) {
case RESOURCE_METHOD_START:
try {
logger.info("HTTPRequest {} /{} {}", requestEvent.getContainerRequest().getMethod(), requestEvent.getContainerRequest().getUriInfo().getPath(), request.get().getRemoteAddr());
} catch (Exception e) {
logger.error("Exception {}", e);
}
break;
case FINISHED:
logger.info("HTTPResponse {} /{} {}", requestEvent.getContainerResponse().getLength(), requestEvent.getContainerRequest().getUriInfo().getPath(), System.currentTimeMillis() - startTime);
break;
}
}
}
J'ai essayé d'injecter l'objet grizzly http demande, qui fonctionne comme ça quand j'utilise un RequestFilter à la place un EventListener. Mais je reçois NullPointerException concernant l'objet request
.
Est-il possible d'obtenir l'adresse IP de la requête de cette manière (ou de toute autre manière) dans un RequestEventListener?
Merci à l'avance, Rob