Как организовать Scala-код в проекте Lift? - PullRequest
7 голосов
/ 01 марта 2011

После 1,5 с лишним лет программирования на Ruby и Rails я наконец-то начал работать над одним из новых проектов в Scala и Lift.В основном я пытаюсь написать API для доступа к информации из огромной базы данных (миллионы строк).Lift должен помочь мне написать интерфейс этого проекта (часть API).Но теперь это также включает модуль, который будет читать из сжатого файла ZIP XML, чтобы первоначально заполнить базу данных строками.Этот модуль должен запускаться один раз в 3 месяца.

Где мне разместить код этого модуля?или, скорее, как мне организовать мой код Lift и Scala?Куда идут фоновые процессы?Любые указатели на этот счет приветствуются.

Ответы [ 3 ]

5 голосов
/ 01 марта 2011

Я немного сомневаюсь, что это то, что вам нужно, но я использую SBT (http://code.google.com/p/simple-build-tool/). Он рисует структуру проекта по умолчанию. Особенно следует обратить внимание на подпроекты (http://code.google.com/p/simple-build-tool/wiki/SubProjects).

Для запланированных процессов вы можете использовать актера и ActorPing для перезапуска процесса через регулярные промежутки времени. Для таких длительных интервалов, как 3 месяца, вы можете отслеживать последний вызов, коснувшись файла и проверив дату перезапуска приложения. ActorPing должен быть инициирован при запуске приложения; это можно сделать в багажнике лифта. Если вам нужно больше модульности, вы можете создать сервлет, который инициирует ActorPing на сервлет init.

2 голосов
/ 01 марта 2011

Lift следует (по крайней мере, версиям, которые я использую) стандартной структуре Maven 2, поэтому здесь нет ничего особенного. Просто добавьте код в папку src. Пакеты для создания будут зависеть от вашего дизайна / предпочтений, мы не можем вам в этом помочь:)

1 голос
/ 28 апреля 2011

«Стандартный» проект Lift с использованием SBT в качестве сборки обычно требует следующей структуры проекта:

project
src
  main
    scala
      bootstrap
        liftweb
          Boot.scala
      project-name
        comet
        lib
        model
        snippet
        view
    resources
    webapp
      WEB-INF/web.xml
      index.html
  test
    resources
    scala
      RunWebApp.scala

Если вы используете Lift Mapper ORM, вы обычно помещаете свои модели в каталог src / main / scala / project-name / model. Аналогично, любой из ваших CometActors должен находиться в src / main / scala / project-name / comet. Любые пользовательские сниппеты должны быть в каталоге src / main / scala / project-name / snippet и любых пользовательских компонентах View в директории вида под project-name. Весь код, связанный с загрузкой вашего приложения, установлением коннекторов базы данных и т. Д., Должен находиться в файле src / main / scala / bootstrap / liftweb / Boot.scala. Остальная часть структуры выпадает, как и в предыдущих ответах, которая следует общей структуре Maven 2.

Это просто общая структура, которая предоставляется приложением Lift по умолчанию. Единственное, что требуется, - это файл bootstrap.liftweb.Boot.scala, поскольку Lift Servlet ищет этот класс во время загрузки.

...