spray 框架_用Spray-Servlet发动战争

spray 框架

我们将使用spray-servlet构建API的war文件。 因此,我们可以在Java应用服务器中运行它。 我假设我们已经有一个正常工作的REST API。 我们将需要src / main / webapp / WEB-INF /下的web.xml:

<?xml version="1.0"?>
<web-app>
    <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>
</web-app>

我们需要一个sbt插件来建立战争。 将此添加到project / plugins.sbt中:

addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "1.0.0")

我们将为build.sbt添加依赖项,并添加其他任务:

name := "exampleAPI"

version := "1.0"

scalaVersion := "2.11.2"

libraryDependencies ++= {
  val akkaVersion = "2.3.6"
  val sprayVersion = "1.3.2"
  Seq(
    "io.spray"            %%  "spray-can"       % sprayVersion,
    "io.spray"            %%  "spray-servlet"   % sprayVersion, //We need spray-servlet
    "io.spray"            %%  "spray-routing"   % sprayVersion,
    "io.spray"            %%  "spray-json"      % "1.3.1",
    "io.spray"            %%  "spray-testkit"   % sprayVersion  % "test",
    "org.scalatest"       %%  "scalatest"       % "2.2.4"       % "test",
    "com.typesafe.akka"   %%  "akka-actor"      % akkaVersion,
    "com.typesafe.akka"   %%  "akka-testkit"    % akkaVersion   % "test",
    "com.typesafe.akka"   %%  "akka-slf4j"      % akkaVersion,
    "ch.qos.logback"      %  "logback-classic"  % "1.1.2"
  )
}

//This adds tomcat dependencies, you can also use jetty()
tomcat()

我们需要扩展spray.servlet.WebBoot:

import akka.actor.{Props, ActorSystem}
import spray.servlet.WebBoot

// this class is instantiated by the servlet initializer
// it needs to have a default constructor and implement
// the spray.servlet.WebBoot trait
class Boot extends WebBoot {
  //we need an ActorSystem to host our application in
  implicit val system = ActorSystem("SprayApiApp")
 
  //create apiActor
  val apiActor = system.actorOf(Props[ApiActor], "apiActor")

  // the service actor replies to incoming HttpRequests
  val serviceActor = apiActor
}

并在application.conf中添加对该类的引用:

spray.servlet {
boot-class = “Boot”
}

现在我们可以运行sbt package进行战争了。 在sbt中,使用container:start通过我们的应用程序启动tomcat服务器。 和container:stop停止它。

每次更改代码时,重新启动服务器的一种好方法是:

~container:start

翻译自: https://www.javacodegeeks.com/2015/03/building-a-war-with-spray-servlet.html

spray 框架

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值