是否有可能在JAX-RS 2.0資源類實例構建時(也可能在靜態類初始化時)獲取Java EE 7應用程序的上下文路徑,還是僅在資源類中的端點請求期間可用?JAX-RS 2.0資源實例構建時的應用程序上下文路徑
上下文路徑指的是在Java EE 7應用程序中調用HttpServletRequest#getContextPath()
所返回的字符串。
我想你可能可以有多個部署應用程序的上下文路徑別名。如果是這樣,上下文路徑可能僅在請求時纔可用。
但是,我不在乎實際在請求的URL中使用的上下文路徑。規範或默認的上下文路徑將適用於該類中的端點對我來說足夠好。
獲得這種上下文路徑的技術不需要特定於JAX-RS 2.0。它可以來自其他Java EE 7規範,只要它在JAX-RS 2.0資源類構建時(或者更廣泛地說,在靜態類初始化時)工作即可。
更新:
我忘了提,該類是CDI @ApplicationScoped
,所以它的構造是不是在請求時被調用,因爲這將是如果它是@RequestScoped
。
感謝您的信息。我會嘗試一下。實際上,我之前看到過這個類,但是因爲它的javadocs指定了這個類,所以我們對它進行了折扣:「如果在請求範圍外調用,所有方法拋出java.lang.IllegalStateException」http://docs.oracle.com/javaee/7/api/javax /ws/rs/core/UriInfo.html – XDR 2014-10-08 13:46:07
此外,我最初忘記提及類是@ ApplicationScoped,所以構造函數在請求時不會被調用。 – XDR 2014-10-08 13:49:47
事實上,除了'getBaseUri()'和'getBaseUriBuilder()'以外,javadoc在每種方法上都指定了它。我試過Wildfly 8.1,它工作。資源也是'@ ApplicationScoped'。 – Benjamin 2014-10-08 13:51:19