Как развернуть приложение Play в Websphere 7 - PullRequest
1 голос
/ 22 февраля 2012

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

Я используюкоманда play war с опцией --zip, которая работает правильно.Полученный файл войны имеет правильную компоновку (WEB-INF на верхнем уровне, а мои файлы перемещены в WEB-INF / lib).

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

Я попытался развернуть демонстрационные приложения и новое пустое приложение таким же образом, но снова я просто получаюпустая страница с надписью Not found Get /.Единственное, что есть в журнале, это WARN ~ 404 -> GET / (GET /).

Я пробовал это с Play 1.2.3 и 1.2.4, Websphere 7.0.0.0 и 7.0.0.19.Я также пытался переключать различные параметры развертывания в Websphere, хотя параметры по умолчанию выглядят так, как будто они должны работать.

Кто-нибудь получил приложение Play для работы в Websphere?Если да, то как?

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

У меня наконец-то все заработало.Я запишу свои шаги на случай, если кто-то еще столкнется с подобными проблемами при развертывании приложения Play в WebSphere в будущем.

1 - Первой проблемой был 404. Websphere не передает запросы на root (/)приложению для обработки (wtf?), поэтому необходимо определить аналогичный маршрут в файле маршрутов:

GET    /*    Application.index

вместо (или поверх)

GET    /    Application.index

2 - Следующей проблемой были ошибки, связанные с несуществующими методами (JPA).Play использует JPA 2.0, а WebSphere 7 использует собственную версию OpenJPA 1.0.Вы можете установить пакет функций для JPA 2 и OSGI (вам не нужна часть OSGI, поэтому ее можно игнорировать).Обратите внимание, что пакет функций требует, чтобы у вас был установлен WebSphere 7.0.0.9 или новее.Это означает совпадение пакетов исправлений как для сервера приложений, так и для комплектного JDK.Пакет исправлений IE 21 (самый последний на тот момент или на момент написания статьи) для сервера и JDK необходимо сначала установить перед установкой пакета функций JPA.По окончании установки пакета возможностей вам будет предложено запустить инструмент профиля.Скажи да.Этот инструмент позволит вам «увеличить» свой профиль (серверный узел, на котором вы собираетесь установить свою войну).Дополнение!

3 - Создайте файл войны, который будет работать в WebSphere:

play war <appFolder> -o <outputFolder> --zip --%prod

Это создаст папку с именем <outputFolder> (взрывная война) и файл .war с именем<outputFolder> .war, с идентификатором приложения, установленным на prod.Разнесенную войну можно удалить.

При запуске этой команды в linux моя папка WEB-INF постоянно помещается в безымянную папку (то есть ниже уровня корневого уровня файла войны).Другими словами, вместо / WEB-INF / создается структура наподобие // WEB-INF /.Во всяком случае, я сейчас исправляю это вручную, заново заархивировав его.Кто-нибудь знает, как избежать этой проблемы?

4 - Установите файл war в WebSphere со всеми настройками по умолчанию в консоли администратора ... или настройте их, если знаете, что делаете.

5 - Я не совсем уверен, нужен ли этот шаг (ничего не меняет для моего конкретного приложения), но все советы, которые я читал онлайн о настройке приложений Play для запуска в WebSphere, говорят об этом.Мех, это не повредит.Нажмите на ваше установленное приложение.Нажмите на ссылку «Загрузка классов и обнаружение обновлений».Затем выберите параметр «Классы, загруженные локальным загрузчиком классов первым (родительский последний)».Хорошо.Сохранить.

6 - Откройте страницу браузера по вашему адресу (localhost: 9080, если локально работает websphere) и протестируйте.На данный момент это должно работать!С надеждой.Удачи.

0 голосов
/ 22 февраля 2012

Распространенная проблема при развертывании в контейнерах сервлетов заключается в том, что, если вы не развертываете свое приложение в качестве файла ROOT war, у вас часто возникают проблемы. Вы уверены, что ваш WAR-файл был развернут так, что путь к приложению доступен как /.

Эта тема является распространенной проблемой

как использовать "war.context" в файле конфигурации Play Framework?

...