2017-02-17 3 views
0

JDK 1.8에서 컴파일 된 WAR 파일을 AWS Tomcat Elastic Beanstalk 인스턴스에 배포하려고합니다. 탄력적 인 beanstalk 인스턴스는 JDK 8과 Tomcat 8을 사용하므로 내 WAR 파일을 배포 할 때 왜 404 오류가 발생하는지 이해할 수 없습니다. 그게 도움이된다면 나는 gradle을 사용하여 응용 프로그램을 빌드하고 WAR를 사용하고 있습니다.AWS에 WAR 배포 Tomcat 404 오류

로그는에 붙여 너무 큰, 나는 의미가 모르는, 그래서 당신이 여기에서 찾을 수 있습니다 내 보관함에 번들로 우편 업로드 : 이 https://www.dropbox.com/s/d1ssmz76pbqkn20/BundleLogs-1487348401257.zip?dl=0

내 web.xml의도입니다 질문에 붙여 넣기에는 너무 길기 때문에 여기에 링크 할 예정입니다. https://www.dropbox.com/s/4m7v3fhcczs0ina/web.xml?dl=0

가변성으로 인해 스택 오버플로에 링크를 제공하는 것이 좋기 때문에 솔루션을 찾으면 직접 질문을 편집합니다. 코드의 관련 세그먼트를 포함하십시오.

+0

합니까입니다 로컬 컴퓨터에서 같은 전쟁 실행? 모든 종속성이 로컬 classpath가 아니라 gradle로 캡처됩니까? 또한 ROOT webapp 또는 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); 
    } 
}