2

从技术上讲,这不是一个编程问题,而是一个关于我从 Maven 项目部署我的 war 文件时遇到的错误的问题。

在构建我的战争文件、运行 Tomcat7 并打开浏览器后,我得到的错误是:

HTTP Status 404 - /vaadin-test/

type Status report

message /vaadin-test/

description The requested resource (/vaadin-test/) is not available.

我使用Vaadin作为我的网络应用平台。我有一个非常简单的项目,我正在尝试运行以进行测试。我在我的 POM 文件中使用tomcat7-maven-pluginand 。maven-war-plugin战争插件配置看起来像这样(我认为我什至不需要过滤):

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>

            <configuration>
                <packagingExcludes>WEB-INF/web.xml</packagingExcludes>
                <warName>vaadin-test</warName>

                <webResources>
                    <resource>
                        <directory>src/main/webapp/</directory>
                        <filtering>true</filtering>

                        <includes>
                            <include>**/*.xml</include>
                        </includes>
                    </resource>
                </webResources>
            </configuration>
        </plugin>

web.xml 如下所示:

<servlet>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>

    <init-param>
        <param-name>application</param-name>
        <param-value>com.catalystitservices.vaadin.TestApp</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>/test-app</url-pattern>
</servlet-mapping>

无论我尝试运行mvn tomcat7:run还是将创建的 war 文件部署到外部 Tomcat 服务器(通过管理器页面),我都会收到相同的错误。这让我认为我没有正确构建战争文件。我找不到任何错误日志(但也许我错过了它们)。

有任何想法吗?

4

1 回答 1

5

如果你没有<finalName>在你的<build>块中指定,Maven 将创建一个如下格式的战争名称:

vaadin-test-1.0.war

vaadin-test工件名称在哪里1.0,版本字符串在哪里。

因此,您必须参考的网址/vaadin-test-1.0不是/vaadin-test

此外,您的 vaadin servlet 绑定到 url /test-app 因此在添加 finalName 标记后,完整的 URL 应该类似于:/vaadin-test/test-app

注意!请注意,1.0这里只是一个例子,pom.xml实际价值请自行咨询

于 2012-08-27T16:51:39.287 回答