2017-02-17 193 views
0

我试图将在JDK 1.8中编译的WAR文件部署到AWS Tomcat Elastic Beanstalk实例。弹性beanstalk实例使用JDK 8和Tomcat 8,所以我不明白为什么我在部署WAR文件时收到404错误。如果有任何帮助,我正在使用gradle构建和WAR应用程序。将WAR部署到AWS Tomcat 404错误

日志太大,粘贴,我不知道什么是显著,所以我上传的捆绑压缩到我的Dropbox的,你可以在这里找到: https://www.dropbox.com/s/d1ssmz76pbqkn20/BundleLogs-1487348401257.zip?dl=0

我的web.xml也过长的问题贴,所以我会在这里链接到它:https://www.dropbox.com/s/4m7v3fhcczs0ina/web.xml?dl=0

我知道这是不好的做法放弃,因为他们的可变性的堆栈溢出的联系,所以一旦找到解决方法,我会编辑的问题,直接包括相关的代码段。

+0

这是否在本地计算机上一样运行战争?你所有的依赖都是在Gradle中而不是在你的本地类路径中捕获的吗?你也试图部署它作为ROOT的Web应用程序或只是your-website.com/webapp或只是your-website.com? –

回答

3

你的错误是非常直截了当:

org.xml.sax.SAXParseException; systemId: file:/var/lib/tomcat8/webapps/ROOT/WEB-INF/web.xml; lineNumber: 477; columnNumber: 23; Error at (477, 23) : The servlets named [TextHistoryServlet] and [TextHistoryServlet] are both mapped to the url-pattern [/TextHistoryServlet] which is not permitted 

围绕这条线,你会看到:

<servlet-mapping> 
    <servlet-name>CsvParseServlet</servlet-name> 
    <url-pattern>/CsvParseServlet</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>TextHistoryServlet</servlet-name> 
    <url-pattern>/TextHistoryServlet</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>TextHistoryServlet</servlet-name> 
    <url-pattern>/TextHistoryServlet</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>SurveyServlet</servlet-name> 
    <url-pattern>/SurveyServlet</url-pattern> 
</servlet-mapping> 

为TextHistoryServlet

+0

非常感谢死者的回应。我在日志中看到了不少错误,并认为这个问题比这个问题更严重,但这确实有窍门! –

0

取下第二映射我也不太清楚,如果这解决了你的问题。我有一个类似的问题,并且在扩展SpringBootServletInitializer之后被修复了。这是因为我的应用程序运行使用Tomcat 8,Java 8平台,这就像一个容器。通常,在容器中部署战争时,需要扩展SpringBootServletInitializer。

下面是一个简单Application.java

@SpringBootApplication 
public class Application extends SpringBootServletInitializer { 
    public static void main(String[] args) { 

     SpringApplication.run(Application.class, args); 
    } 
}