我有一個WAR文件,我在Tomcat中運行。此WAR包含多個HTML頁面(用於測試目的)http://localhost:port/testapp/somepage.html
。我如何從CXF REST服務類獲取上下文路徑
包括在這個應用程序也是CXF REST服務端點,這是在http://localhost:port/testapp/cxf/
有一些服務託管像http://localhost:port/testapp/cxf/getlink
的getlink方法服務應該返回一個鏈接到HTML頁面中的一個。 我不想在代碼或配置文件中靜態設置上下文路徑,因爲我無法控制應用程序將託管在什麼上下文路徑。
所以我想要做的是在運行時獲取上下文路徑。我該怎麼做呢?
我曾嘗試以下(注意@Path("/")
的路徑是「CxF」一部分來自web.xml和它的CXF servlets的路徑)
@Path("/")
public class TestEndpoint {
...
@Context
UriInfo uri;
@GET
@Path("/getlink")
public Response giveMeXML(@Context Request context) {
URI baseURI = UriBuilder.fromUri(uri.getBaseUri()).replacePath("").build();
....
}
我預計UriInfo.getBaseUri()
給我一個URI包含我的應用程序的「scheme:// host:port/contextpath」,但它沒有。它返回 「scheme:// host:port/contextpath/cxf-app-path」like http://localhost:8080/testapp/cxf
如何獲取在REST端點下部署WAR的上下文路徑?想要的是以某種方式獲取部署WAR的上下文路徑,如:http://localhost:8080/testapp/
。