2012-02-29 9 views

Respuesta

22

se podría añadir @Context HttpServletRequest request como un parámetro para el método de controlador de solicitudes. Y a continuación, obtener una bodega de la IP del cliente con request.getRemoteAddr()

+0

¡Genial! Gracias por la respuesta rápida, funciona como un encanto. – user1226230

+1

RemoteUser vuelve nulo para mí, pero RemoteHost y RemoteAddr funcionan como estaba previsto – bobtheowl2

+0

Probé la solución pero obtengo "No coinciden los tipos: no se puede convertir de Contexto a Anotación". ¿Cómo puedo resolverlo? – Greenhand

2

En caso de que utilice grisáceo-Jersey combinado, esa es la manera de hacerlo:

@Context 
private java.lang.ThreadLocal<org.glassfish.grizzly.http.server.Request> grizzlyRequest; 
0

Opción 2 para Grizzly-Jersey combinado. Lugar en la declaración de la clase (extensor de ContainerRequestFilter en mi caso)

@Inject 
private javax.inject.Provider<org.glassfish.grizzly.http.server.Request> request; 

y más tarde en el código de uso de este.

request.get().getRemoteAddr() 

Cavé alrededor y he encontrado el resolution in the jersey's jira. Nota que recomiendan que se utilizará en lugar de @Inject @Context

he tratado de utilizar

@Context 
    private HttpServletRequest servletRequest; 

que se recomienda ampliamente, pero ServletRequest siempre fue nula.

* comment servletRequest fue nulo porque se utilizó GrizzlyHttpServerFactory para crear HttpServer. Si desea tener servletRequest, debe implementarlo con WebappContext. Take a look here for details

Cuestiones relacionadas