如何拥有一个使用playframework库的Scala独立应用程序

大卫·波特贝拉

我有一个简单的测试Scala应用程序,该应用程序阻止了HTTP请求:

build.sbt

name := "hello"

version := "1.0"

scalaVersion := "2.11.2"

libraryDependencies += "com.typesafe.play" %% "play-ws" % "2.4.0-M1"

测试规模

import play.api.libs.json._
import play.api.libs.ws._
import scala.concurrent.duration.Duration
import scala.concurrent.{Await, Future}

object Test {
  def main(args: Array[String]) = {
    val wsClient = WS.client
    val body = getBody(wsClient.url("http://example.com/").get())
    println(s"body: $body")
  }

  def getBody(future: Future[WSResponse]) = {
    val response = Await.result(future, Duration.Inf);
    if (response.status != 200)
      throw new Exception(response.statusText);
    response.body
  }
}

此应用程序失败并显示:

Exception in thread "main" java.lang.RuntimeException: There is no started application

如何解决这个问题?

威尔·萨金特

编辑Play 2.5:

import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import play.api.libs.ws._
import play.api.libs.ws.ahc.AhcWSClient

import scala.concurrent.Future

object Main {
  import scala.concurrent.ExecutionContext.Implicits._

  def main(args: Array[String]): Unit = {
    implicit val system = ActorSystem()
    implicit val materializer = ActorMaterializer()
    val wsClient = AhcWSClient()

    call(wsClient)
      .andThen { case _ => wsClient.close() }
      .andThen { case _ => system.terminate() }
  }

  def call(wsClient: WSClient): Future[Unit] = {
    wsClient.url("http://www.google.com").get().map { response =>
      val statusText: String = response.statusText
      println(s"Got a response $statusText")
    }
  }
}

请参阅:

有关独立WSClient用法的更多详细示例。如果要从早期版本迁移,请参阅https://www.playframework.com/documentation/2.5.x/Migration25#Play-WS-upgrades-to-AsyncHttpClient-2

对于Play 2.4:

不要对HTTPS使用原始的AsyncHttpClientConfig.Builder -它不会使用主机名验证来配置安全的SSLContext。

您可以使用以下代码创建新的WSClient实例:

import play.api.libs.ws.ning._
import play.api.libs.ws._

val config = new NingAsyncHttpClientConfigBuilder(DefaultWSClientConfig()).build()
val builder = new AsyncHttpClientConfig.Builder(config)
val wsClient:WSClient = new NingWSClient(builder.build())

请注意,这将启动线程,除非您关闭客户端,否则这些线程将无法关闭:

wsClient.underlying[NingWSClient].close()

如果不关闭它,可能会遇到内存泄漏。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何维护一个可由Android应用程序和独立应用程序使用的数据库

来自分类Dev

OSX:如何拥有专用的应用程序来管理另一个应用程序的首选项

来自分类Dev

当前,另一个应用程序拥有yum锁;等待它退出

来自分类Dev

在一个应用程序中拥有多个用户的最佳方法

来自分类Dev

在同一个应用程序中拥有 firebase 和 AngularFire2

来自分类Dev

如何构建一个没有共享库的Rust应用程序?

来自分类Dev

是否可以通过jdbc在一个主机,端口和数据库上拥有多个Oracle应用程序实例?

来自分类Dev

如何为一个应用程序创建一个数据库,以供使用同一应用程序的所有用户共享?

来自分类Dev

使用Windows,我如何在PIP模式下拥有两个应用程序?

来自分类Dev

从两个应用程序发送iOS推送通知,但如果用户同时拥有两个应用程序,则仅发送一个

来自分类Dev

从两个应用程序发送iOS推送通知,但如果用户同时拥有两个应用程序,则仅发送一个推送通知

来自分类Dev

是否可以同时拥有无线网络和有线网络,并让不同的应用程序使用其中一个?

来自分类Dev

在同一个应用程序上拥有多个 package.json 文件是否有好处?

来自分类Dev

如何使用现有应用程序的spring配置类仅测试一个bean?

来自分类Dev

如何使用现有应用程序的spring配置类仅测试一个bean?

来自分类Dev

Rake错误坚持要求我拥有一个用户角色,即我的应用程序名称?

来自分类Dev

我有一个密钥库文件,如何在Android应用程序中为sslContext提供keyManager?

来自分类Dev

应用程序可以处理N个接受连接,每个接受使用一个独立的线程

来自分类Dev

Playframework应用程序,包括独立的主应用程序

来自分类Dev

如何在整个应用程序中使用一个数据库连接对象?

来自分类Dev

创建一个Java独立可执行应用程序,没有任何安装在不同的平台上运行

来自分类Dev

如何使用一个 Dockerfile dockerizing 一个 spring boot 应用程序?

来自分类Dev

如何在我的应用程序中在 android studio 中显示一个显示视频源的独立窗口?

来自分类Dev

多个使用 Redisson 的独立应用程序可以共享同一个集群 Redis 吗?

来自分类Dev

如何制作一个可以复制其数据库的应用程序

来自分类Dev

如何与另一个 Python 应用程序共享 Django 数据库?

来自分类Dev

如何从android应用程序在SQLite数据库中创建一个新表

来自分类Dev

如何构建一个PHP应用程序以防止多次包含一个库?

来自分类Dev

使用IntelliJ IDEA为免费/付费版本的应用程序维护一个代码库

Related 相关文章

  1. 1

    如何维护一个可由Android应用程序和独立应用程序使用的数据库

  2. 2

    OSX:如何拥有专用的应用程序来管理另一个应用程序的首选项

  3. 3

    当前,另一个应用程序拥有yum锁;等待它退出

  4. 4

    在一个应用程序中拥有多个用户的最佳方法

  5. 5

    在同一个应用程序中拥有 firebase 和 AngularFire2

  6. 6

    如何构建一个没有共享库的Rust应用程序?

  7. 7

    是否可以通过jdbc在一个主机,端口和数据库上拥有多个Oracle应用程序实例?

  8. 8

    如何为一个应用程序创建一个数据库,以供使用同一应用程序的所有用户共享?

  9. 9

    使用Windows,我如何在PIP模式下拥有两个应用程序?

  10. 10

    从两个应用程序发送iOS推送通知,但如果用户同时拥有两个应用程序,则仅发送一个

  11. 11

    从两个应用程序发送iOS推送通知,但如果用户同时拥有两个应用程序,则仅发送一个推送通知

  12. 12

    是否可以同时拥有无线网络和有线网络,并让不同的应用程序使用其中一个?

  13. 13

    在同一个应用程序上拥有多个 package.json 文件是否有好处?

  14. 14

    如何使用现有应用程序的spring配置类仅测试一个bean?

  15. 15

    如何使用现有应用程序的spring配置类仅测试一个bean?

  16. 16

    Rake错误坚持要求我拥有一个用户角色,即我的应用程序名称?

  17. 17

    我有一个密钥库文件,如何在Android应用程序中为sslContext提供keyManager?

  18. 18

    应用程序可以处理N个接受连接,每个接受使用一个独立的线程

  19. 19

    Playframework应用程序,包括独立的主应用程序

  20. 20

    如何在整个应用程序中使用一个数据库连接对象?

  21. 21

    创建一个Java独立可执行应用程序,没有任何安装在不同的平台上运行

  22. 22

    如何使用一个 Dockerfile dockerizing 一个 spring boot 应用程序?

  23. 23

    如何在我的应用程序中在 android studio 中显示一个显示视频源的独立窗口?

  24. 24

    多个使用 Redisson 的独立应用程序可以共享同一个集群 Redis 吗?

  25. 25

    如何制作一个可以复制其数据库的应用程序

  26. 26

    如何与另一个 Python 应用程序共享 Django 数据库?

  27. 27

    如何从android应用程序在SQLite数据库中创建一个新表

  28. 28

    如何构建一个PHP应用程序以防止多次包含一个库?

  29. 29

    使用IntelliJ IDEA为免费/付费版本的应用程序维护一个代码库

热门标签

归档