2010-05-27 45 views
1

當Tomcat啓動時,它會調用我的ServletContextListener來獲取數據庫連接,稍後我將在其他servlet中使用getServletContext()。這就是所謂的我的web.xml中爲:
listener
listener-class org.ppdc.database.DBCPoolingListener /listener-class
/listener>
(我刪除了<>,因爲他們不會在這個消息正確顯示>
如果我不能連接到數據庫時的Tomcat啓動時,我得到一個404錯誤。 ?,因爲Tomcat的無法啓動應用程序Tomcat - 當ServletContextListener失敗時重定向到錯誤頁面

我怎樣才能將用戶重定向到自定義錯誤頁,在這一點上我想在我的web.xml以下(我在原來的<>括號中):
(error-page)
(error-code404/error-code)
(location/file_not_found.html/lo陽離子)
(/錯誤頁)

如何給用戶,以我的錯誤頁面的重定向一個任何想法時啓動Tomcat嘗試啓動應用程序?

感謝 維克

+0

您不必鍵入HTML(雖然你可以),和代碼可以與具有0和1的一個按鈕進行轉義。 – 2010-05-27 17:19:40

+0

嗨亞歷山大。我不太明白你的意思。你能發表一個關於它想要的評論的例子嗎? – Vic 2010-05-27 17:43:43

+0

歡迎來到SO。首先閱讀 - > http://stackoverflow.com/editing-help。當您提出或編輯問題時,在編輯區域頂部,幾乎沒有圖標。所有這些都可以在編輯幫助中描述的自動輸入。如果他們有助於解決你的問題,那麼它就習慣於接受或贊同答案。 – 2010-05-27 19:17:28

回答

0

如果您的應用程序加載失敗,那麼這就是它。 Tomcat沒有運行它,並且不提供你的錯誤頁面。

因此,如果您想要處理半死狀態,則需要以半死狀態啓動。幸運的是,如果你安裝了一個過濾器,那麼你的servlet中的代碼就可以省去檢查應用程序是否已經死機了,這在控制權被轉移到任何servlet之前完成。

在web.xml中聲明一個過濾器:

<filter> 
    <filter-name>IsHalfDeadFilter</filter-name> 
    <filter-class>my.package.IsHalfDeadFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>IsHalfDeadFilter</filter-name> 
    <url-pattern>*</url-pattern> 
</filter-mapping> 

然後實現doFilter方法來重定向到您的錯誤頁面。

@Override 
public void doFilter (
     final ServletRequest request, 
     final ServletResponse response, 
     final FilterChain chain 
    ) throws 
     IOException, 
     ServletException 
{ 
    if (isHalfDead) 
    { 
     // redirect to error page 
     return; 
    } 

    chain.doFilter(request, response); 
} 

瞭解更多關於過濾器here

+0

再次感謝亞歷山大。這看起來像它會爲我工作。我會進一步調查,從你提供的鏈接開始。 – Vic 2010-05-27 18:53:20

相關問題