Каковы подходы к развертыванию статических файлов, чтобы Spray мог их обслуживать?

У меня есть html-страница, которую я хотел бы использовать на спрей-сервере.

Я знаком с https://github.com/spray/spray/wiki/File-and-Resource-Directives

  1. Как мне создать архив, который можно развернуть в Spray (аналогично файлам .war Tomcat, которые можно развернуть в каталоге webapps)?

  2. Как скопировать файлы из одного каталога в другой с помощью SBT (например, у нас есть задача копирования для инструмента сборки ant)

  3. ссылаясь на «будет обслуживаться из файла JAR. В этом случае клиент — это каталог, который был упакован в архив JAR. Кстати, это работает в режиме разработки без упаковки JAR».

Структура моего проекта похожа на

src/main/resources/<files to include in main jar here>
src/main/scala/<main Scala sources>
src/main/java/<main Java sources>
src/main/test/resources/<files to include in test jar here>
src/main/scala/<test Scala sources>
src/main/java/<test Java sources>

поэтому, где мне нужно сохранить каталог с именем «клиент». где мне нужно хранить файлы .html и файлы js, на которые ссылается мой html.

если я выполню команду package в интерактивном режиме SBT, она даст мне jar. как я могу запустить эту банку из build.sbt или build.scala


person Vithre    schedule 23.07.2014    source источник


Ответы (1)


Спрей может обслуживать статический контент, как вы упомянули. Например:

val myRoute =
  get {
    compressResponse()(getFromResourceDirectory("client")) ~
    path("") {
      getFromResource("client/index.html")
    }
  }

будет служить из файла JAR. В данном случае client — это каталог, упакованный в архив JAR. Кстати, это работает и в режиме разработки без упаковки JAR.

Существует 2 способа запуска приложения на основе спрея: либо с встроенным сервером аэрозольных баллончиков (файл JAR), либо в контейнере (файл WAR) .

Если вы используете Tomcat или какой-либо другой веб-контейнер, вы можете создать обычный файл WAR с помощью одного из плагинов SBT. Например, https://github.com/earldouglas/xsbt-web-plugin может упаковывать ВОЕННЫЕ файлы.

Если вы хотите запустить свое веб-приложение на сервере Spray-can, вы можете использовать для этого готовый шаблон: https://github.com/spray/spray-template. BTW Spray предоставляет шаблоны на основе Jetty и Spray-can.

Вы всегда можете использовать другие плагины SBT и создать собственную сборку, которая упакует все в файл WAR или JAR. Одна вещь, которую нужно понимать о Spray-can, заключается в том, что это обычное приложение, имеющее основной класс, который запускает службу, которая прослушивает некоторый порт (8080) вместе с системой акторов, которая обслуживает запросы, поэтому вам не нужен никакой веб. сервер или контейнер для его запуска.

person yǝsʞǝla    schedule 23.07.2014
comment
посмотрите на этот полный проект, который упаковывает приложение Spray-can для примера: github.com/pgxcentre/eventhub. В частности: github.com/pgxcentre/eventhub/blob/master/project. /Build.scala и github.com/pgxcentre/eventhub/blob/master/rest/src/main/scala/ - person yǝsʞǝla; 23.07.2014