2013-11-24 30 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();