2009-10-29 14 views

Respuesta

47

Qué tal esto:

@WebService 
public class MyService { 

    @Resource 
    WebServiceContext wsContext; 

    /** 
    * Web service operation 
    */ 
    @WebMethod 
    public String myMethod() { 

    MessageContext mc = wsContext.getMessageContext(); 
    HttpServletRequest req = (HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST); 
    System.out.println("Client IP = " + req.getRemoteAddr()); 

    } 

} 
+2

creo que acaba de perder la anotación @Resource. – monksy

+0

Según mi leal saber y entender, esta es la mejor descripción de cómo hacerlo en toda la red. ;) Gracias, Pascal! – Zakum

+0

Intento lo mismo, pero mc tamaño 22 y "solicitud" es nulo. No puedo entender por qué, ¿tienes alguna idea? – luffy

4

O esto:

 
@Path("terminal") 
public class terminal { 
    @Context private javax.servlet.http.HttpServletRequest hsr; 
    @GET 
    @Path("get_ip") 
    @Produces("text/plain") 
    public String get_ip() 
    { 
      return ip = hsr.getRemoteAddr(); 
    } 
} 
+0

¿Esto no es aplicable solo a REST? – Koekiebox

2

Tomando una pista enorme y apreciar a partir de Zain y de Darren respuesta/editar, he intentado esto, y funciona también.

@GET 
@Produces(MediaType.TEXT_PLAIN) 
@Path("ip") 
public String sayIP(@Context HttpServletRequest req, @QueryParam("p1") String p1, ...) { 
    return req.getRemoteAddr(); 
} 
0
public String getIp(@Context HttpServletRequest req) { 
    return req.getRemoteHost(); 
} 
+0

@Context no se puede identificar, y no se sugiere importar, ¿qué es esto exactamente? –

+0

@ united-expression, https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/core/Context.html, https://jersey.java.net/documentation/ latest/jaxrs-resources.html –

Cuestiones relacionadas