2011-11-21 64 views
1

我有一個servlet過濾器,我想在Jetty中映射到http://127.0.0.1:8888/。我已經使用url模式/*放置了一個servlet過濾器映射。但是,該過濾器未被調用。我也嘗試用/映射。它也不起作用。這是如何造成的,我該如何解決這個問題?如何在Jetty上將/ servlet過濾器映射到/ *上?

+0

它是一個tomcat服務器嗎?您可以嘗試將您的應用捆綁爲root.war並進行部署。 – srkavin

+0

實際上,沒有...它是一個碼頭 – fernandohur

回答

3

如果你的名字你的戰爭root.war將被部署到根/上下文。

http://wiki.eclipse.org/Jetty/Howto/Deploy_Web_Applications

+0

2件事情,首先,我使用碼頭,因爲它是eclipse的GWT-GAE插件中的默認服務器,所以我不知道如何做到這一點。其次,我不認爲GAE使用碼頭,所以我怎樣才能解決GAE問題。 – fernandohur

+0

考慮問另一個問題,以便其他人可以幫助您使用GWT和GAE特定項目。這個問題是通用的,並且根據我們所知,在詳細情況下得到了回答。 –

0

在碼頭的每個應用程序部署到它的上下文 - 這意味着它有斜線後某一部分 - 即http://127.0.0.1:8888/context/ - 你的servlet映射realitve最後斜線 - 而不是之前的上下文

的一個正如其他答案中所提到的,您必須將該應用程序部署爲root.war以克服此問題。

0

可選,你可以$JETTY_HOME/webapps下創建名爲root目錄和Web應用程序的內容複製到$JETTY_HOME/webapps/root

2

您可以重定向從「/」到「/ urlToRedirect」的請求,並通過特殊的servlet處理「/ urlToRedirect」。像例如:

public static void main(String[] args) throws Exception { 
    Servlet frontend = new Frontend(); 

    Server server = new Server(8080); 
    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); 
    context.addServlet(new ServletHolder(frontend), "/index"); 
    context.addServlet(new ServletHolder(frontend), "/auth"); 

    ResourceHandler resource_handler = new ResourceHandler(); 
    resource_handler.setDirectoriesListed(false); 
    resource_handler.setResourceBase("static"); 

    RewriteHandler rewriteHandler = new RewriteHandler(); 
    rewriteHandler.setRewriteRequestURI(true); 
    rewriteHandler.setRewritePathInfo(true); 
    rewriteHandler.setOriginalPathAttribute("requestedPath"); 
    RedirectRegexRule rule = new RedirectRegexRule(); 
    rule.setRegex("/"); 
    rule.setReplacement("/index"); 
    rewriteHandler.addRule(rule); 

    HandlerList handlers = new HandlerList(); 
    handlers.setHandlers(new Handler[]{rewriteHandler, resource_handler, context}); 
    server.setHandler(handlers); 

    server.start(); 
    server.join(); 
} 
相關問題