2010-04-29 109 views
4

我需要獲取Restlet資源類中的應用程序根(它擴展了ServerResource)。我的最終目標是嘗試返回到另一個資源的完整顯式路徑。在Restlet中獲取路徑(上下文根)到應用程序

我目前正在使用getRequest().getResourceRef().getPath(),這幾乎讓我有我需要的東西。這不會返回完整的URL(如http://example.com/app),它會返回給我/resourceName。因此,我遇到了兩個問題,一個是缺少模式(http或https部分)和服務器名稱,另一個是它沒有返回應用程序所在的位置。

因此,如果有人的資源位於'http://dev.example.com/app_name/person',我想找到一種方法來取回'http://dev.example.com/app_name'。

我正在使用Restlet 2.0 RC3並將其部署到GAE。

回答

2

它看起來像getRequest().getRootRef().toString()給了我我想要的。我試着用getRequest().getRootRef()的方法調用(如的getPathgetRelativePart)的結合,不過他們給我的東西我不想要或

1

request.getRootRef()request.getHostRef()

1

只需從服務上下文獲取基礎URL,然後與資源共享並根據需要添加資源路徑。

MyServlet.init(): 

String contextPath = getServletContext().getContextPath(); 
getApplication().getContext().getAttributes().put("contextPath", contextPath); 

MyResource: 

String contextPath = getContext().getAttributes().get("contextPath"); 
0

servlet的上下文是從的Restlet的應用程序訪問:

org.restlet.Application app = org.restlet.Application.getCurrent(); 
javax.servlet.ServletContext ctx = ((javax.servlet.ServletContext) app.getContext().getAttributes().get("org.restlet.ext.servlet.ServletContext")); 
String path = ctx.getResource("").toString(); 
相關問題