2009-10-29 39 views

Trả lời

47

gì về điều này:

@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

Tôi nghĩ rằng tôi vừa bỏ qua chú thích @Resource. – monksy

+0

Theo hiểu biết tốt nhất của tôi, đây là mô tả tốt nhất về cách thực hiện điều này trên toàn bộ web. ;) Cảm ơn bạn, Pascal! – Zakum

+0

Tôi thử cùng nhưng mc kích thước 22 và "yêu cầu" là null. Tôi không thể hiểu tại sao, bạn có ý tưởng gì không? – luffy

4

Hoặc này:

 
@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

Điều này không áp dụng cho REST chỉ? – Koekiebox

2

Lấy một gợi ý rất lớn và đánh giá cao từ Zayin và Darren của câu trả lời/chỉnh sửa, tôi đã cố gắng này, và nó hoạt động quá.

@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 không thể được xác định và không nhập được đề xuất, chính xác điều này là gì? –

+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 –

Các vấn đề liên quan