2014-04-08 131 views
0

我正在逐步將我們的應用程序servlet從web.xml遷移到Guice servlet模塊,並遇到UrlRewrite過濾器(tuckey.org/urlrewrite/)的問題。它不處理在Guice模塊中註冊的servlet。如果我在web.xml中註冊servlet和過濾器,一切正常,但如果我嘗試在Guice模塊中註冊它們 - does not。 有人遇到過類似的問題嗎?Guice和URLRewrite過濾器集成

下面是從代碼一些摘錄:

1)吉斯配置模塊。

public class ServletConfigurationModule extends ServletModule { 

@Override 
protected void configureServlets() { 

    bind(UrlRewriteFilter.class).in(Singleton.class); 

    Map<String, String> urlRewriteParams = new HashMap<>(); 
    urlRewriteParams.put("confReloadCheckInterval", "60"); 
    urlRewriteParams.put("statusEnabled", "false"); 

    filter("/*").through(UrlRewriteFilter.class, urlRewriteParams); 

    serve("/account").with(Account.class); 

2)urlrewrite.xml內容

<rule> 
     <from>/affiliate-activation</from> 
     <to>/account?do=affiliate&amp;trg=5</to> 
    </rule> 

當我嘗試打開網址爲myhost /子公司激活我得到404 HTTP錯誤。

+0

我認爲張貼示例代碼總是受歡迎的,並且能夠更好地理解問題。 – Opal

+0

添加代碼示例 –

+0

一切似乎都很完美。恐怕這個過濾器可能根本不會與guice一起工作。 – Opal

回答

0

我希望我已經解決了這個問題。 Here你可以通過一個例子找到一個回購。克隆回購並執行gradle jettyRun。您可以使用瀏覽器測試應用程序。隨時提出任何問題和分享想法。基本上urlrewrite.xml已更改。

+0

嗨,感謝您的幫助,解決方案奏效,但有沒有什麼方法可以在瀏覽器中覆蓋原始網址(在我們的例子中是「affiliate-activation」)重定向網址(/ account?do = affiliate&trg = 5)?換句話說,原始網址應該在瀏覽器窗口中保持不變。 –

+0

不知道。您需要通過錯誤進行試用。 – Opal