2012-06-23 33 views
1

標題非常明瞭。當我跑我的NetBeans(Tomcat的7)應用程序,一切工作正常(從我的目錄結構的根index.jsp文件在瀏覽器中顯示):Tomcat網絡應用程序在Netbeans中運行,但空白頁面顯示在生產服務器上

enter image description here

當我部署的應用程序,以我的生產服務器,它成功地部署:

enter image description here

然而,當我嘗試訪問該頁面在生產服務器上,因此它僅顯示一個空白頁,而不是index.jsp文件:

enter image description here

下面是這個程序我的web.xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
<filter> 
    <filter-name>filter</filter-name> 
    <filter-class>com.dendro.mvc.filters.StaticFilesFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<!-- abstract controller to filter static file requests --> 
<servlet> 
    <servlet-name>Controller</servlet-name> 
    <servlet-class>com.dendro.mvc.filters.Controller</servlet-class> 
</servlet> 
<!-- servlet names --> 
<servlet> 
    <servlet-name>PropagatedResults</servlet-name> 
    <servlet-class>com.dendro.query.PropagatedResultsServlet</servlet-class> 
</servlet> 
<servlet> 
    <servlet-name>PlainResults</servlet-name> 
    <servlet-class>com.dendro.query.PlainResultsServlet</servlet-class> 
</servlet> 
<servlet> 
    <servlet-name>HomeFilter</servlet-name> 
    <servlet-class>com.dendro.query.HomeFilterServlet</servlet-class> 
</servlet> 

<!-- mappings --> 
<servlet-mapping> 
    <servlet-name>Controller</servlet-name> 
    <url-pattern>/views/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>HomeFilter</servlet-name> 
    <url-pattern>/views/</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>PlainResults</servlet-name> 
    <url-pattern>/views/query/plain_results</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>PropagatedResults</servlet-name> 
    <url-pattern>/views/query/propagated_results</url-pattern> 
</servlet-mapping> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

我的context.xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<Context antiJARLocking="true" path=""/> 

將tomcat日誌只顯示我成功請求( 200 ok):

192.168.5.77 - - [23/Jun/2012:14:00:29 +0100] "GET /GraphQuery-1.0-SNAPSHOT/ HTTP/1.1" 200 - 
192.168.5.77 - - [23/Jun/2012:14:00:29 +0100] "GET /GraphQuery-1.0-SNAPSHOT/ HTTP/1.1" 200 - 
192.168.5.77 - - [23/Jun/2012:14:00:30 +0100] "GET /GraphQuery-1.0-SNAPSHOT/ HTTP/1.1" 200 - 
192.168.5.77 - - [23/Jun/2012:14:00:31 +0100] "GET /GraphQuery-1.0-SNAPSHOT/ HTTP/1.1" 200 - 
+1

您已檢查_all_日誌? –

+0

有catalina.out,localhost。 .log文件和localhost_access_log 文件。它們中沒有一個顯示任何部署錯誤。我認爲這與context.xml文件有關,也許它不會重定向到正確的根目錄......我試圖將Context元素(在context.xml文件中)的路徑屬性更改爲/GraphQuery-1.0- SNAPSHOT,無濟於事 –

+1

他們顯示其他內容嗎? Tomcat可能會感到困惑。 –

回答

0

原來問題是我在web.xml文件中的過濾器類。最初我已經把它放在了Tomcat中的靜態文件服務中,但它似乎讓Tomcat困惑,沒有日誌顯示重定向或異常。它在Netbeans中工作,因爲Netbeans總是在ROOT文件夾中部署正在調試的應用程序。與tomcat生產服務器不同,沒有上下文目錄需要考慮,如

http://localhost:8084/myapp, 

其中myapp是上下文。

更改web.xml文件並使用靜態文件的默認servlet之後,我開始使用相對映射 - 有時候會有些駭人聽聞,但它起作用。

我不得不改變項目中的一些網址來解釋變化。由於在生產服務器中我在URL中有上下文,因此我必須更改CSS中的URL,例如,使用相對路徑,如../static/img/myimage.jpg

這是新的Web版本。現在正在工作的xml文件,供進一步參考:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

    <!--servlet classes--> 
    <servlet> 
     <servlet-name>PropagatedResults</servlet-name> 
     <servlet-class>com.dendro.query.PropagatedResultsServlet</servlet-class> 
    </servlet> 
    <servlet> 
     <servlet-name>PlainResults</servlet-name> 
     <servlet-class>com.dendro.query.PlainResultsServlet</servlet-class> 
    </servlet> 

    <servlet> 
     <servlet-name>Home</servlet-name> 
     <servlet-class>com.dendro.query.HomeServlet</servlet-class> 
    </servlet> 

    <!--serving static files--> 
    <servlet-mapping> 
     <servlet-name>default</servlet-name> 
     <url-pattern>*.css</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
     <servlet-name>default</servlet-name> 
     <url-pattern>*.js</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
     <servlet-name>default</servlet-name> 
     <url-pattern>*.jpg</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
     <servlet-name>default</servlet-name> 
     <url-pattern>*.jpeg</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
     <servlet-name>default</servlet-name> 
     <url-pattern>*.png</url-pattern> 
    </servlet-mapping> 

    <!--servlets urls--> 
    <servlet-mapping> 
     <servlet-name>PlainResults</servlet-name> 
     <url-pattern>/query/plain_results</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>PropagatedResults</servlet-name> 
     <url-pattern>/query/propagated_results</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
     <servlet-name>Home</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
</web-app> 
1

請嘗試以下提示,我試圖縮小錯誤來源:

  • 檢查您是否使用指定的過濾器進行過濾。也許煉製/*映射有幫助?
  • 也嘗試訪問您定義的其他一些URL映射,例如localhost:8080/GraphQuery-1.0-SNAPSHOT/views/
  • /明確映射到您的index.jsp或您希望在訪問URL時執行的servlet。對於映射到JSP文件,您可以在web.xml中的servlet-mapping元素中使用jsp-file元素。
+0

謝謝,這有幫助。不幸的是,我發佈了完整的答案,其中涉及代碼和web.xml中的一些非常劇烈的變化。不管怎樣,謝謝你! :) –

相關問題