Создает ли проект, построенный на maven, конфликты времени выполнения между версиями Tomcat? - PullRequest
0 голосов
/ 17 февраля 2012

Я просто хочу знать, что если я разрабатываю весенний проект MVC, используя maven как встроенный инструмент, и когда я развертываю это приложение после создания файла war, это создаст конфликты из-за tomcat?

Чтобы быть болееВ частности, позвольте мне попросить вас привести пример:
Во время разработки, я полагаю, у меня есть версия Tomcat 6.0.xx, а на производственном сервере, я полагаю, у меня есть версия Tomcat 6.xx Это создаст конфликты?

Надеюсь, выполучил мой вопрос ..

1 Ответ

1 голос
/ 19 февраля 2012

Это потенциально может.

Как правило, если вы зависите от версии Tomcat и ее среды исполнения, вам нужно будет указать область действия зависимости, как указано ниже, что по сути означает, что maven не будет ее упаковывать.с вашим приложением:

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

Недавно я столкнулся с этой проблемой при использовании разных версий Jetty.Один пакет, который был определен как предоставленный, использовал Jetty 6, в то время как другой пакет, развернутый в этой среде выполнения, использовал Jetty 8.

  • Jetty 6 использует servlet-api 2.5 (не имеет метода getHeaders ())
  • Jetty 8 использует servlet-api 3.0 (имеет метод getHeaders ())

Мой модуль использовал Jetty 8 (следовательно, servlet-api 3.0) и вызывал getHeaders () изОбъект HttpServletRequest.Когда я бегал на месте, все было хорошо.Но при развертывании и вызове getHeaders () сработало исключение NoSuchMethod.Имейте в виду, что затем я изменил свою локальную настройку, чтобы более точно соответствовать настройкам среды, и смог воспроизвести проблему.

Надеюсь, что это имеет смысл и помогает

...