2012-06-23 89 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中的一些非常剧烈的变化。不管怎样,谢谢你! :) –

相关问题