1. 程式人生 > >centOS下Tomcat域名無法訪問Servlet問題的處理

centOS下Tomcat域名無法訪問Servlet問題的處理

一.先看tomcat server.xml的配置

      <Host name="www.gengducun.com"  appBase="/home/web/gengducun"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />

		<Context path="" docBase="/home/web/gengducun/WebRoot" reloadable="false" crossContext="true"/>
      </Host>
貼這個程式碼是表示,已經可以通過域名訪問到專案的WebRoot目錄了。

二.問題

我所面臨的問題是,WebRoot目錄雖然可以訪問,但是我的Servlet不可以訪問。這個問題讓我糾結了很久,最後在網上找到一篇文章啟發了我。其實原因就是,Servlet不能訪問,那要麼就是路徑問題,要麼就是這個路徑下的類所對應的.class檔案找不到,因為Servlet類最終是需要通過編譯生成.class檔案的。那麼首先想路徑問題,在Eclipse上右鍵,檢視java build path,然後切換到source選項卡,看我們編譯後的檔案輸出路徑指向哪兒,網站專案預設是指向的專案的build目錄的,這裡就存在問題,按照上面server.xml的配置路徑來看,我們專案的根路徑是在WebRoot下面,那麼如果生成的.class檔案是在專案的build目錄下面的話,當我們直接訪問servlet的時候,肯定在WebRoot目錄下面找不到,那麼如何處理呢?這裡就需要在eclipse中將原始碼編譯後的輸出路徑指向WebRoot目錄下的WEB-INF的classes目錄下面,這樣當我們訪問專案的servlet的時候,就會在專案的WebRoot目錄下去找相關的.class類。

三.問題解決參考文件

https://blog.csdn.net/wangxiaoyaner/article/details/51008398