Playframework + проблема развертывания Tomcat - PullRequest
4 голосов
/ 28 июня 2011

Я пытаюсь развернуть веб-приложение, разработанное в игровой среде в 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 из файла воспроизведения войны.И как только это будет сделано, я вижу следующее сообщение об успехе:

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?Где во время воспроизведения {имя приложения} работает нормально.

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

Спасибо, Аби

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

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

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

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

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

1 голос
/ 27 марта 2012

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

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