Мой текущий проект включает создание
веб-приложения Lift и его развертывание в нашем контейнере приложений OSGi. Я работал со
Scala в течение некоторого времени, и меня всегда интересовал Lift. С выпуском Scala 2.8 и Lift 2.0 я решил, что пришло время реально попробовать Lift в моем текущем проекте.
Самый простой способ развернуть WAR-файл — использовать War Extender от Pax Web.
, Это позволяет вам просто развернуть файл WAR с обновленным файлом MANFIEST.MF (что делает его OSGi Bundle) в том же контейнере, что и Pax Web. В моем примере я создам WAR-файл как стандартный плагин OSGi и создаю его с помощью Eclipse, но вы также можете создать обычный WAR-файл с помощью Maven или SBT, добавить атрибуты OSGi в файл MANIFEST.MF и развернуть его с помощью Pax Web. ,
Предполагаются следующие шаги:
- Затмение является IDE
- Scala-IDE (плагин Scala) установлен.
- Scala 2.8
- Lift 2.0 (нужен снимок Scala 2.8 от Scala-Tools )
Первым шагом было создание стандартного проекта плагина OSGi. Затем отредактируйте файл проекта, добавив команду сборки Scala:
<buildcommand>
<name>ch.epfl.lamp.sdt.core.scalabuilder</name>
</buildcommand>
построить buildSpec и удалить Java Builder
Затем добавьте Scala Nature
<nature>ch.epfl.lamp.sdt.core.scalanature</nature>
к природам. Я добавил оба к верхней части соответствующих разделов.
Затем вам нужно будет перезагрузить проект (закрыть / открыть), и он должен быть с поддержкой Scala.
Затем я объединил проект
Lift Template с моим проектом Eclipse. Я скопировал каталог src / main / scala в свой каталог src, а src / main / webapp — в корневой каталог проекта.
На этом этапе Eclipse должен увидеть исходные файлы Scala, но они не будут компилироваться, поскольку библиотеки Lift еще не находятся в пути к классам.
Я загрузил необходимые зависимости из различных репозиториев Maven и добавил их в каталог WEB-INF / lib. Для моего первоначального проекта мне понадобилось:
- Joda времени
- лифт-актер
- подъемный общий
- подъемная JSON
- лифт-Util
- лифт-WebKit
- paranamer-генератор
- SLF4J
- org.apache.commons.fileupload
Помните, если вы используете Scala 2.8 для загрузки версии 2.8.0 библиотек лифта (которые в настоящее время находятся под снимками вместо выпусков). Когда у вас есть все зависимости, пример кода Lift должен скомпилироваться.
Теперь вы можете работать над развертыванием пакета.
Вам понадобится комплект Pax Web WAR Extender и все его зависимости. Их можно найти в этом
репозитории Maven , и они описаны
здесь для версии 0.7.1 .
После развертывания веб-пакетов Pax вы сможете развернуть свой пакет. Pax Web WAR Extender просканирует все пакеты на наличие файла web.xml и попытается развернуть их, если найдет один.
По умолчанию он использует символическое имя пакета (Bundle-SymbolicName: xxx) в качестве корневого контекста, но вы можете указать свое собственное, добавив следующую строку в ваш файл MANIFEST.MF:
Webapp-Context: /
развернуть как корневой контекст или
Webapp-Context: mycontext
развернуть как / mycontext
Это было все, что нужно для запуска и запуска примера приложения Lift. Теперь я могу использовать контейнер OSGi для ссылки на другие зависимости и продолжить сборку приложения в Eclipse.
Пара замечаний:
Вы можете развернуть библиотеки и зависимости Lift в виде OSGi-пакетов, а не в каталоге WEB-INF / lib этого пакета. На момент написания этой статьи Lift OSGi Bundles еще не были доступны для 2.8, но все, что им нужно, это обновленный файл MANIFEST.MF.
Как я уже отмечал в начале, вы можете просто отредактировать файл MANIFEST.MF любого WAR и развернуть его таким образом. Если ваше приложение Lift не зависит от других пакетов OSGi, это может быть самым простым подходом.