这在技术上不是一个编程问题,而是一个关于从Maven项目部署war文件时遇到的错误的问题。
我在构建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-plugin
和maven-war-plugin
。 war插件配置看起来像这样(我认为我甚至不需要过滤):
<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服务器(通过管理器页面),我得到了同样的错误。这让我觉得我没有正确构建war文件。我找不到任何错误日志(但也许我错过了它们)。
有什么想法吗?
答案 0 :(得分: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
NB!请注意1.0
这里只是一个示例,请咨询您自己的pom.xml
了解实际价值