2013-11-24 22 views
3

从我的JAX-RS(州)内资源获取里面的HTTP URL我需要获得新泽西Servlet这是“发布”该资源的基础网址。我试着注射ServletContext描述here,然后做一个:从JAX-RS资源

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

得到“基地”泽西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)单一而不是双重E中的协议,(c)中的端口号和(d)缺少URL模式用于触发泽西的servlet后斜线。那么,如何才能获得:

  1. 泽西的servlet
  2. 触发特定@GET@POST标注的方法的完整URL的基础http://网址是什么?

回答

8

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

@Context 
private UriInfo uriInfo; 

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

uriInfo.getBaseUri();