我对 Twitter finagle 客户端/服务器的行为非常奇怪。
拥有服务器
def start(): Unit = {
val port=8500
println(s"Running Finagle Mock Server in port $port.......")
mockServer = Some(Http.server
.configuredParams(finagle.Http.Http2)
.configured(finagle.Http.Netty4Impl)
.serve(s"localhost:$port", mockService))
}
还有一个客户
override def client():Unit = {
val clientService = Http.newService("localhost:8500")
val future: Future[Response] = clientService(createRequestUsingBuilderWithJson())
future.onFailure(th =>{
println(th)
})
future.onSuccess(value => {
println(value)
})
val response: Response = Await.result(future)
println(response.contentString)
}
@throws[Exception]
def createRequestUsingBuilderWithJson(): Request = {
new RichHttpRequestBuilder()
.withMethod(Method.Get).withPath("/rest_connection/external_service").build
}
如果我在另一个 JVM 进程中将服务器作为应用程序运行,然后运行客户端一切正常,我可以访问服务器并收到 200 响应。
但是,如果不是先在另一个进程中运行,而是在运行客户端之前在 samr JVM 中运行服务器,则通信永远不会到达服务器,而我只是在我的 onFailure 客户端回调中收到
DefaultHttpResponse(chunked: false)
HTTP/1.1 500 Internal Server Error
content-length: 0
Connection: close
知道为什么我不能在同一个 JVM 中运行客户端/服务器吗???