Размещение спрей акка на веб-сервере
У меня есть приложение, построенное на спрей + акка. используя это руководство:
http://sysgears.com/articles/building-rest-service-with-scala/
Это объясняет этот пример: https://github.com/oermolaev/simple-scala-rest-example
Приложение работает просто отлично. Но при попытке развернуть на веб-сервере я не нашел способа сделать это.
Я пытался использовать xsbt-web-plugin для развертывания на Tomcat, получил следующий вход:
~container:start
[info] стартовый сервер... Добавление контекста для цели / веб-приложения...
Запуск службы Tomcat Запуск сервлетного двигателя:
Apache Tomcat / 7.0.34 org.apache.catalina.startup.ContextConfig
getDefaultWebXmlFragment ИНФОРМАЦИЯ: Глобальный файл web.xml не найден
org.apache.coyote.AbstractProtocol start ИНФО: запуск
ProtocolHandler ["http-nio-8080"]
Но Tomcat возвращает 404 для всех запросов.
Кто-нибудь знает, как я могу развернуть приложение спрей Акка на Tomcat?
1 ответ
Решил проблему.
Вот что вам нужно, чтобы xsbt-plugin работал с приложением spray:
- Установить
root-path
в application.conf
Как указал @jrudolph: сервлет-спрей не знает, как это сделать автоматически на tomcat:
spray.servlet {
boot-class = "com.sysgears.example.boot.Boot"
root-path = "/rest"
request-timeout = 10s
}
- Изменить класс
boot
расширитьwebBoot
:
boot.scala
class Boot extends WebBoot {
// create an actor system for application
val system = ActorSystem("rest-service-example")
// create and start rest service actor
val serviceActor = system.actorOf(Props[RestServiceActor], "rest-endpoint")
}
добавьте web.xml, как описано в xsbt-web-plugin:
SRC / Главный / WebApp/WEB-INF/web.xml:
<listener> <listener-class>spray.servlet.Initializer</listener-class> </listener> <servlet> <servlet-name>SprayConnectorServlet</servlet-name> <servlet-class>spray.servlet.Servlet30ConnectorServlet</servlet-class> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SprayConnectorServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
Для полного изменения смотрите сравнение на github (автор сценария щедро сгенерировал эту ветку для пользователей tomcat)
https://github.com/oermolaev/simple-scala-rest-example/compare/spray-tomcat