gpt4 book ai didi

java - 无法使用注入(inject)器注入(inject) Play 的 WSClient 实例

转载 作者:搜寻专家 更新时间:2023-11-01 03:17:21 26 4
gpt4 key购买 nike

我有一个注入(inject)了 WSClient 依赖项的类:

@Singleton
class MyApiService @Inject() (wsclient: WSClient, conf: Configuration) {
...
}

并且在运行测试并使用注入(inject)器创建 MyApiService 实例时:

class MyTest extends FreeSpec with OneAppPerSuite with ScalaFutures with WsScalaTestClient {

implicit lazy val materializer: Materializer = app.materializer

lazy val wsc: WSClient = app.injector.instanceOf[WSClient]
lazy val conf: Configuration = app.injector.instanceOf[Configuration]

val myApiService: MyApiService = app.injector.instanceOf[MyApiService]

"Api Test" in {
...
}

我收到这个错误:

An exception or error caused a run to abort: Unable to provision, see the following errors:

1) Error injecting constructor, java.lang.NumberFormatException: format error 10000 at play.api.libs.ws.ahc.AsyncHttpClientProvider.(AhcWSModule.scala:40) at play.api.libs.ws.ahc.AsyncHttpClientProvider.class(AhcWSModule.scala:39) while locating play.api.libs.ws.ahc.AsyncHttpClientProvider while locating play.shaded.ahc.org. ... Caused by: java.lang.NumberFormatException: format error 10000

在我的 application.cong 中我添加了:

  ws.timeout.connection = 10000
ws.timeout.idle = 10000
ws.timeout.request = 10000

试过改成60000没有区别...

使用 play 2.6.0 和 scala 2.11.8

有人可能知道它为什么会失败?

谢谢

最佳答案

我遇到了同样的问题。这是 ws.timeout 属性的格式问题。

在 Play 2.6 中,这些属性需要有一个时间单位。这是一个 example configuration

WSConfigParser 尝试使用这些属性的值构造 scala.concurrent.Duration 的实例。持续时间 throw an exception如果提供的值没有有效的时间单位。

解决方法是向这些属性添加 ms -> 1000ms

这是我的应用程序.conf

play {
ws {
timeout {
connection: 10000ms
idle: 30000ms
request: 60000ms
}
}
}

关于java - 无法使用注入(inject)器注入(inject) Play 的 WSClient 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45067001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com