【问题标题】:getting the HTTP URL from inside a JAX-RS resource从 JAX-RS 资源中获取 HTTP URL
【发布时间】:2013-12-09 11:05:15
【问题描述】:

从我的 JAX-RS (Jersey) 资源中,我需要获取 Jersey Servlet 的基本 URL,即“发布”该资源。我尝试按照here 的描述注入ServletContext,然后执行以下操作:

return servletContext.getResource("/").toString();

获取该资源的 Jersey Servlet 的“基本”URL。

然而,上面的代码返回的值如下:

jndi:/localhost/jax-rs-tomcat-test/

我期待的更像是:

http://localhost:8080/jax-rs-tomcat-test/jax-rs

jax-rs”是我的 web.xml 中的内容:

<servlet-mapping>  
   <servlet-name>jersey-servlet</servlet-name>  
   <url-pattern>/jax-rs/*</url-pattern>  
</servlet-mapping> 

也就是说,有四个“区别”:(a) 协议,(b) 协议后面的单斜杠而不是双斜杠,(c) 端口号和 (d) 缺少用于触发 Jersey servlet 的 URL 模式。那么,我如何获得:

  1. Jersey servlet 的基本http:// URL
  2. 触发特定@GET@POST 注释方法的完整URL?

【问题讨论】:

    标签: jersey tomcat7 jax-rs


    【解决方案1】:

    您正在寻找UriInfo。使用 @Context 将其注入到您的资源中:

    @Context
    private UriInfo uriInfo;
    

    然后你可以调用getBaseUri()方法:

    uriInfo.getBaseUri();
    

    【讨论】:

      猜你喜欢
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多