Playframework + проблема с развертыванием Tomcat

Я пытаюсь развернуть веб-приложение, разработанное в игровой среде в Tomcat. Первые несколько попыток я получил следующее сообщение в консоли Tomcat:

INFO: validateJarFile(C:\Tomcat7\webapps\sandbox.war\WEB-INF\lib\geronimo-servlet_2.5_spec-1.2.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

Поэтому я вручную удалил geronimo-servlet_2.5_spec-1.2.jar из файла play war. И как только это будет сделано, я вижу следующее сообщение об успехе:

13:56:43,571 INFO  ~ Starting C:\Tomcat7\webapps\sandbox.war\WEB-INF\application

13:56:43,618 INFO  ~ Application is precompiled
13:56:44,149 INFO  ~ Connected to jdbc:mysql://localhost/db?useUnicode=yes&ch   aracterEncoding=UTF-8&connectionCollation=utf8_general_ci
13:56:44,899 INFO  ~ Application 'play-sandbox' is now started !

Когда я пытаюсь получить доступ к приложению из IE, используя URL-адрес http://localhost:8080/play-sandbox Я получаю ошибку 404, в которой говорится: «Запрошенный ресурс (/play-sandbox/) недоступен».

Я запускаю это в Tomcat 7, и журналы tomcat чисты. я использую

 play war play-sandbox -o sandbox.war

породить войну

Вопросы таковы,

  1. Как предотвратить конфликт geronimo-servlet_2.5_spec-1.2.jar?
  2. Почему я не могу просмотреть приложение через браузер в развертывании Tomcat? Где play run {название приложения} работает нормально.

    Тот же файл войны, похоже, отлично работает и на сервере Glassfish. Я считаю, что это как-то связано с контекстным путем приложения playframework или изоляцией приложения. Любая помощь будет оценена по достоинству.

Спасибо, Аби


person Abhishek    schedule 28.06.2011    source источник


Ответы (2)


Вы пробовали более раннюю версию Tomact? Согласно матрице развертывания, Play «официально» не поддерживает Tomact 7, так что это может быть частью проблемы. См. здесь http://www.playframework.org/documentation/1.2.1/deployment

Что касается того, почему приложение работает, когда вы делаете play run appname, а не когда вы развертываете через tomcat, это то, что развертывание совершенно другое. Play не является платформой, совместимой с Java EE. Они решили не идти по пути спецификации сервлета, так как считали его слишком сложным, раздутым и ограниченным там, где они хотели использовать Play. Вот почему у вас нет таких вещей, как сеанс и другие основные функции Java EE.

Следовательно, чтобы заставить Play работать в контейнере сервлета, необходимо обернуть приложение Play в оболочку, которая представляет приложение как приложение, совместимое с сервлетом, и переместить все это в файл WAR. Однако вы теряете некоторые функции стандартного приложения Play.

Разработчики Play и я, если на то пошло, рекомендуем всегда использовать сервер приложений Play, чтобы получить максимальную отдачу от вашего приложения и упростить развертывание, если это возможно!

person Codemwnci    schedule 28.06.2011
comment
@Codemwnci- Я не уверен, что ты имеешь в виду под игровым сервером приложений? Вы имеете в виду тот, который идет с командой play run..? Кстати, я вынужден использовать Tomcat7, так как наша организация использует эту версию в качестве стандарта :( так что я действительно мало что могу с этим поделать.. грустно :( - person Abhishek; 28.06.2011
comment
Да, я имею в виду сервер приложений play как тот, который запускается при вводе play run (он использует Netty). - person Codemwnci; 29.06.2011

Сначала у меня была такая же проблема, как и у вас, когда я развернул веб-приложение для воспроизведения на Tomcat 7, но потом я запустил его:

  1. Да, вы должны вручную удалить библиотеку geronimo-servlet_2.5_spec-1.2.jar.
  2. Причиной может быть дополнительная ошибка, не имеющая ничего общего с первой проблемой. Пожалуйста, просмотрите файл журнала ‹tomcat›/logs/catalina.out, а также файл журнала ‹tomcat›/logs/localhost.‹date›.log! В моем случае это была отсутствующая библиотека JDBC. Я добавил недостающую библиотеку в каталог play apps /lib, пересоздал war-файл, снова удалил geronimo-servlet_2.5_spec-1.2.jar и после этого мое приложение заработало под Tomcat 7.0.25
person vespa    schedule 27.03.2012