2009-09-26 35 views
0

最初我有一個叫做「admin」的webapp運行良好,部署在tomcat 6的$ CATALINA_HOME/webapps /目錄中。現在我嘗試設置一個虛擬主機來運行這個webapp。Tomcat虛擬主機配置不適用於Struts動作

第一步:我加在$ CATALINA_HOME/conf目錄/ server.xml中

<Host name="mysubdomain.domain.com" appBase="keshav"> 

</Host> 

第二步如下:我創建了一個文件夾$ CATALINA_HOME /凱沙夫

第三步:創建的根上下文$ CATALINA_HOME /凱沙夫/ ROOT

第四步:動了我的 「admin」 的Web應用程序(這是$ CATALINA_HOME/webapps /目錄內)到$ CATALINA_HOME /凱沙夫

現在,當我訪問http://mysudomain.domain.com/admin/jsp/login.jsp,它可以很好地啓動登錄頁面。但是當我試圖訪問http://mysubdomain.domain.com/admin/Login.do或任何其他支柱作用它給了我404無錯

「HTTP狀態404 - Servlet的作用是不可用」

在catalina.out的文件,我得到的消息「INFO:Servlet的動作目前無法使用「

任何人都可以請幫我弄清楚這個配置有什麼問題嗎?

更新:我也將連接器端口從8080更改爲80.由於打開80端口需要root權限,我使用sudo啓動tomcat(我正在使用的用戶位於sudoers列表中)。

每當我用sudo運行tomcat時,struts動作的404錯誤都會發生。如果我將連接器端口從80改爲8080,並且啓動時不使用sudo,虛擬主機工作正常。

如果我su啓動tomcat,它也工作正常。使用sudo似乎會導致此問題。

回答

0

這是ActionServlet的典型特徵。它將所有異常映射到UnavailableException,因此即使該servlet已經死亡,您也總會得到「不可用」的錯誤。日誌中應該有其他信息來顯示確切的原因。

當您在sudo中運行服務器時,環境會改變。也許struts配置依賴於一些環境變量或默認工作目錄?

嘗試「sudo -s catalina.sh」。它可能有幫助。

0
  1. 您是否爲虛擬主機定義了上下文?看看Tomcat虛擬主機指南的Configuring Your Context部分。
  2. ROOT上下文不是必需的(除非您實際使用它)。
  3. 在您的web.xml中,'action'servlet是否映射爲'* .do'模式?我認爲,既然你說過它運行良好,但它從來沒有傷害檢查。
+0

感謝chssply76的回覆。 1)不,我想在我的「admin」webapp中不需要單獨的context.xml,$ CATALINA_HOME/conf中的默認值就足夠了2)是ROOT不是必需的,但我使用它來重定向到「admin 「webapp 3)是的。請檢查我的最新更新.. - Keshav – Keshav

+0

因此,JSP甚至可以在端口80上使用sudo,但操作不行?您是否確定工作的JSP實際上來自您的「虛擬」主機,而不是之前運行的人工產物(例如緩存編譯的或者來自非虛擬應用程序的)?運行sudo可能(通常會)改變你的環境,運行'sudo -V'來查看細節。也許有些事情在類路徑中發生了一些事情......嘗試通過sudo啓動Tomcat,同時端口仍然在8080 - 這應該有助於縮小到sudo vs端口問題。一定要啓動Tomcat清理(沒有任何工作/ tmp; webapp部署到一個地方)。 – ChssPly76