Java JERSEY:如何使用注入注释检索调用IP或URI?

Java JERSEY:如何使用注入注释检索调用IP或URI?,java,jersey,Java,Jersey,我这里有一个使用JERSEY的REST服务器。我必须记录呼叫客户端的IP(更好的DNS) 有人能指出使用哪个注入注释的方向吗 搜索了“@Context”,但找不到任何合适的内容 谢谢 Gerd您可以将@Context-HttpServletRequest作为参数添加到请求处理程序方法中。然后使用request.getRemoteAddr()获取客户端IP,以防使用Grizzly Jersey combo,方法如下: @Context private java.lang.ThreadLocal&l

我这里有一个使用JERSEY的REST服务器。我必须记录呼叫客户端的IP(更好的DNS)

有人能指出使用哪个注入注释的方向吗

搜索了“@Context”,但找不到任何合适的内容

谢谢
Gerd

您可以将
@Context-HttpServletRequest
作为参数添加到请求处理程序方法中。然后使用
request.getRemoteAddr()

获取客户端IP,以防使用Grizzly Jersey combo,方法如下:

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

灰熊球衣组合的选项2。 放在类的声明中(在我的例子中是ContainerRequestFilter的扩展程序)

我四处搜寻,找到了那个。 注意,他们建议使用@Inject而不是@Context

我试着用

  @Context
  private HttpServletRequest servletRequest;
这是广泛推荐的,但servletRequest始终为空


*注释servletRequest为null,因为我被用于创建HttpServer。如果希望使用servletRequest,则需要使用WebappContext部署它

RemoteUser为我返回null,但RemoteHost和RemoteAddr按计划工作我尝试了解决方案,但得到“类型不匹配:无法从上下文转换为注释”。我该怎么解决呢?@JeffreyLin很难说从远处:)也许你导入了一个不同的上下文类?确保您已经导入了
javax.ws.rs.core.Context
@rompetroll非常感谢!
request.get().getRemoteAddr()
  @Context
  private HttpServletRequest servletRequest;