2012-02-17 1 views
0

난 단지 maven을 사용하여 스프링 mvc 프로젝트를 빌드하고 war 파일을 만든 후에 해당 응용 프로그램을 배포 할 때 Tomcat 때문에 충돌이 발생한다는 것을 알고 싶습니다.maven에서 빌드 된 프로젝트가 tomcat 버전간에 런타임 충돌을 생성합니까?

예를 들어 좀 더 구체적으로 물어 보겠습니다.
개발 중에 나는 버전 6.0.xx를 가지고 있고 생산 서버에는 tomcat 버전이 6.x.x라고 가정합니다. 충돌이 발생합니까?

희망 사항 내 질문이 있습니다.

+0

어떤 종류의 충돌에 대해 이야기하고 있습니까? 좀 더 구체적으로 표현할 수 있습니까? – khmarbaise

+0

버전 충돌에 대해 이야기하고 있습니다. –

답변

1

잠재적으로 할 수 있습니다.

일반적으로 Tomcat의 버전과 런타임 환경에 의존하는 경우 다음과 같이 종속 항목의 범위를 "제공"해야합니다. 이는 필수적으로 다음과 같이 종속 항목이 패키지와 함께 패키지되지 않음을 의미합니다. 앱 :

<dependency> 
    <groupId>com.abc.xyz</groupId> 
    <artifactId>runtimepackage</artifactId> 
    <version>1.2.3</version> 
    <scope>provided</scope> 
</dependency> 

최근에 다른 버전의 부두에서이 문제가 발생했습니다. 그 런타임 환경에 배포 된 다른 패키지 부두 제

  • 부두 6 서블릿 API 2.5을 사용한다 (어떤 메소드 호출 대해 getHeaders가 없다())
  • 부두를 사용하면서 부두 6을 사용하고 규정 된 범위 하였다 한 패키지 도 8은 서블릿 API 3.0을 사용하여 (이있는 방법이라고 대해 getHeaders())

제 8 부두 (따라서 서블릿 API 3.0)를 사용하여 모듈 HttpServletRequest의 개체에서()를 호출 대해 getHeaders 하였다. 내가 로컬에서 뛰었을 때 모든 것이 잘되었다. 그러나 배치되고 getHeaders()가 호출되면 NoSuchMethod 예외가 트리거됩니다. 환경 설정과 일치하도록 내 로컬 설정을 변경하고 문제를 재현 할 수있었습니다.

희망과 도움이 되길 바랍니다.