akka-http应用javax.servlet.Filter

时间:2018-01-17 22:42:44

标签: java scala servlets akka-http

如何将实现接口javax.servlet.Filter的类添加到Akka-http服务中,例如下面的示例AkkaHttpMicroservice

object AkkaHttpMicroservice extends App with Service {
  override implicit val system = ActorSystem()
  override implicit val executor = system.dispatcher
  override implicit val materializer = ActorMaterializer()

  override val config = ConfigFactory.load()
  override val logger = Logging(system, getClass)

  Http().bindAndHandle(routes, config.getString("http.interface"), config.getInt("http.port"))
}

在Scalatra中,需要override def init(context: ServletContext),然后context.addFilter("mySecurityFilter", SecurityFilter),但不清楚akka-http中可以访问ServletContext的位置。

1 个答案:

答案 0 :(得分:2)

不幸的是,Akka-Http不是基于标准的Java Servlet API。实际上,整个HTTP处理是从TCP连接的级别重新实现的。这样做是为了充分利用Akka / Akka Streams的强大功能。但是,这意味着您无法将javax.servlet.Filter应用于基于Akka的应用程序。您可能想要使用的是Directives