Jersey 从JAX-RS资源内部获取HTTP URL

Jersey 从JAX-RS资源内部获取HTTP URL,jersey,tomcat7,jax-rs,Jersey,Tomcat7,Jax Rs,从我的JAX-RS(Jersey)资源中,我需要获得JerseyServlet的基本URL,该Servlet“发布”了该资源。我尝试按所述注入ServletContext,然后执行以下操作: return servletContext.getResource("/").toString(); 获取此资源的JerseyServlet的“基本”URL 但是,上面的代码返回如下值: jndi:/localhost/jax-rs-tomcat-test/ 在那里我期待着更像: http://loca

从我的JAX-RS(Jersey)资源中,我需要获得Jersey
Servlet的基本URL,该Servlet“发布”了该资源。我尝试按所述注入
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> 

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

  • Jersey servlet的基本
    http://
    URL
  • 触发特定
    @GET
    @POST
    注释方法的完整URL 你在找我。使用
    @Context
    将其注入资源:

    @Context
    private UriInfo uriInfo;
    
    然后可以调用
    getBaseUri()
    方法:

    uriInfo.getBaseUri();