2012-10-28 68 views
0

我們在嵌入式模式下成功地使用了tomcat 7.0.19。不過最近由於我們關注的一些問題,我們決定遷移到tomcat 7.0.32。大多數情況下,預期使用相同的代碼和更新的版本,但是由於某種原因,戰爭部署一直沒有成功。我有幾個servlet在我的tomcat上註冊。面對以下2個問題,嵌入式Tomcat下的Web應用程序部署7.0.32

  1. 有事從嵌入的Tomcat行爲從7.0.19更改爲7.0.32。爲了詳細說明這一點,讓我解釋一下7.0.19的行爲差異,我可以部署我的應用程序,當我點擊「host:port/contextpath」時,它加載了應用程序的開始頁面(即歡迎頁面,這個頁面是以UI爲中心的,不需要服務器干預,所以我的servlet都不會被調用)。然而,在7.0.32中,相同的url會導致我的servlet被調用。因此,爲了調試問題,我評論了大部分代碼,以便我有一個香草tomcat實現,只是非常基本的東西,即設置引擎名稱,默認主機,設置主機屬性,添加連接器(nio ,具有默認屬性)並部署戰爭。沒有servlet和其他東西,只是爲了檢查非常基本的東西是否工作。令我驚訝的是,當我運行這段代碼時,它仍然失敗,出現了與我的servlet中的相同問題,這是怎麼回事?現在我的代碼被評論爲沒有註冊任何servlet,它仍然從哪裏找到它?嵌入式tomcat是否存儲了一些舊的引用,這些引用在後續運行時沒有被清除?我試圖改變這個港口,但那也沒有幫助。

我在這裏碰壁,無法理解這種奇怪的行爲,如果我弄明白#2,只有這樣才能讓我在#1取得了一些進展。

由於提前,

維克拉姆

+0

您可以發佈您的代碼的相關部分?我會說如果不查看代碼(web.xml和servlet)就不可能提供幫助。 – home

+0

請嘗試查明引入上述行爲的實際版本。檢查7.0.20和7.0.31之間的版本,使用二進制搜索方法沒有太多的工作。 –

回答

0

想通了什麼問題是。

在相反的順序,

2 - 這實際上是用香草嵌入式Tomcat的代碼調用也從未被登記在首位的servlet的一個怪異的行爲。這裏的問題與日食有關,因爲某些原因,它吸取了我的課程的老參考。當我從eclipse之外運行相同的代碼時,即通過命令提示符,事情恢復正常。

1 - 此問題與Web部署有關,在我的代碼中,我另外將我的類裝載器設​​置爲WebappLoader,並最終將我的應用程序JAR添加到其中。這是出於任何原因與7.0.19工作正常,但沒有與7.0.32,當我外化所有我的罐子在應用程序啓動時通過classpath加載這個問題也解決了。

感謝,

玉萍

相關問題