2010-01-06 150 views
0

我在Netbeans中創建了一個Web應用程序,它將應用程序打包到名爲「aa-bb.war」的文件中。當我在netbeans中運行這個項目時,我可以在「localhost:8080/aa/bb」上訪問它。這很好。Tomcat和上下文路徑

雖然將.war文件移動到標準的tomcat安裝中,但卻給我帶來了問題。當我將.war放入「webapp」目錄時,它會被分解爲「webapp/aa-bb」,但我真正想要的是「webapp/aa/bb」(注意兩者之間的「 - 」和「/」 「aa」和「bb」)...所以bb應該放在「aa」的子目錄中。

我的理解是因爲tomcat使用.war的文件名來創建分解的目錄,所以因爲戰爭被稱爲「aa-bb」,所以顯然使用了連字符。我的「context.xml」文件確實有正確的路徑「aa/bb」,但我讀過Tomcat 5+將忽略.war中指定的上下文路徑,並根據文件名創建路徑。

我該如何強制tomcat使用子目錄(它可能看起來像一個小的差異在所產生的網址(「aa-bb」vs「aa/bb」),但它實際上是一個大問題,原因是我現在不會進入(只是使事情變得複雜)

回答

0

tomcat的標準部署結構是所有的應用程序都在第一級別的層次結構中,任何你放在應用程序文件夾中的context.war文件最終都可以通過http://host/context。我很確定你不能強制你提到的子目錄aa/bb,但是你可以通過下面的方法欺騙實現:(1)使應用程序aa.war,(2)在你的應用程序中創建一個名爲bb的目錄,擁有你所有的jsps,(3)如果你有servlet或過濾器,那麼也改變映射o f那些到bb/servlet。

+0

這很有趣,從來沒有嘗試過......我使用netbeans進行打包,但是你有任何想法如何讓netbeans/ant將所有內容都轉儲到子目錄「bb」中? – user85116 2010-01-07 15:42:09

0

你有什麼選擇?我不知道Tomcat最近無視path=""。在前面

  1. 認沽Apache和使用mod_redirectmod_proxy漏斗爲AA/BB請求在Apache以AA-BB在Tomcat中。

  2. 使用UrlRewriteFilter是web應用程序,取決於您使用的任何web框架(如果有?)。調用你的Web應用程序aa.war,然後告訴UrlRewriteFilter將應用程序中的/ bb /的請求發送到/。