2009-10-29 9 views

Antwort

47

Was dazu:

@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

Ich glaube, ich verpasst nur die @Resource Anmerkung. – monksy

+0

Nach meinem besten Wissen ist dies die beste Beschreibung, wie man das im gesamten Internet macht. ;) Danke, Pascal! – Zakum

+0

Ich versuche das gleiche, aber mc Größe 22 und "Anfrage" ist null. Ich verstehe nicht warum, hast du eine Idee? – luffy

4

Oder diese:

 
@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

Gilt dies nicht nur für REST? – Koekiebox

2

Einen großen und geschätzten Hauch von Zayin und Darren Antwort/bearbeiten, habe ich versucht, diese, und es funktioniert auch.

@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 kann nicht identifiziert werden, und kein Import wird vorgeschlagen, was genau ist das? –

+0

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

Verwandte Themen