Tomcat Web应用程序可在Netbeans中运行,但生产服务器中显示空白页

问题描述 投票:1回答:2

标题很不言自明。 当我在Netbeans(Tomcat 7)上运行我的应用程序时,一切正常(浏览器中显示了dir结构的根index.jsp文件):

在此处输入图片说明

将应用程序部署到生产服务器时,它会成功部署:

在此处输入图片说明

但是,当我尝试访问生产服务器中的页面时,它仅显示空白页面,而不显示index.jsp文件:

在此处输入图片说明

这是此应用程序的我的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  -
java-ee tomcat deployment netbeans
2个回答
1
投票

尝试以下提示,我尝试缩小错误源的范围:

  • 检查您是否正在使用指定的过滤器进行过滤。 也许改进/*映射会有所帮助?
  • 也尝试访问您定义的其他一些URL映射,例如localhost:8080/GraphQuery-1.0-SNAPSHOT/views/
  • 明确地将/映射到index.jsp或访问URL时要执行的servlet。 为了映射到JSP文件,可以在web.xml的servlet-mapping元素中使用jsp-file元素。

0
投票

原来问题出在我在web.xml文件中的过滤器类。 最初,我是为了照顾Tomcat中的静态文件服务而设置的,但似乎使Tomcat感到困惑,并且没有日志显示重定向或异常。 它之所以在Netbeans中工作,是因为Netbeans始终将要调试的应用程序部署在ROOT文件夹中。 与tomcat生产服务器不同,它没有上下文目录可解释,例如

http://localhost:8084/myapp,

myapp是上下文。

更改了web.xml文件并为静态文件使用默认的servlet之后,我开始使用相对映射-有时有点hacker,但它可以工作。

我必须在项目中更改一些URL来说明更改。 由于在生产服务器中我在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>
© www.soinside.com 2019 - 2024. All rights reserved.