Finnagle在同一JVM中运行客户端/服务器时出错

时间:2017-11-03 09:41:08

标签: java scala finagle twitter-finagle

我在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中运行客户端/服务器???

0 个答案:

没有答案