2016-08-23 4 views
2

バージョンのHttpClient接続

vert.x core: 3.3.0 

コンテキスト

はちょうどコアの例io.vertx.example.core.http.simple.ClientでHTTPクライアントを実行しようとしていますが閉じていません。 この例を実行すると、確立された接続が要求の完了後に終了しないことがわかりました。

サーバー側私は何の問題も見ませんでした。以来、jmeterとサーバーを試して、そのうまく動作します。だから問題はHttpClientにあると思う。

誰でも私にこれを助けることができますか?

ありがとうございます。次のリクエストとレスポンスが終了した後も示し

running io.vertx.example.core.http.simple.Server code 
running io.vertx.example.core.http.simple.Client code 

エクストラ

を再現する 手順。与え LINUX

lsof -i -P 
java 32551 USER 223u IPv4 16264097 0t0 TCP localhost:8080->localhost:26980 (ESTABLISHED) 
java 32634 USER 218u IPv4 16264087 0t0 TCP localhost:26980->localhost:8080 (ESTABLISHED) 

WINDOWS

TCP 127.0.0.1:8080   FSSCHND12957:56893  ESTABLISHED 
TCP 127.0.0.1:56893  FSSCHND12957:8080  ESTABLISHED 

両方LinuxおよびWindowsシステムで試みています。

クライアントコード

package io.vertx.example.core.http.simple; 

import io.vertx.core.AbstractVerticle; 
import io.vertx.example.util.Runner; 

/* 

    @author Tim Fox 
    */ 
    public class Client extends AbstractVerticle { 

    // Convenience method so you can run it in your IDE 
    public static void main(String[] args) { 
    Runner.runExample(Client.class); 
    } 

    @Override 
    public void start() throws Exception { 
    vertx.createHttpClient().getNow(8080, "localhost", "/", resp -> { 
    System.out.println("Got response " + resp.statusCode()); 
    resp.bodyHandler(body -> { 
    System.out.println("Got data " + body.toString("ISO-8859-1")); 
    }); 
    }); 
    } 
    } 

サーバコード

package io.vertx.example.core.http.simple; 

import io.vertx.core.AbstractVerticle; 
import io.vertx.example.util.Runner; 

/* 

    @author Tim Fox 
    */ 
    public class Server extends AbstractVerticle { 

    // Convenience method so you can run it in your IDE 
    public static void main(String[] args) { 
    Runner.runExample(Server.class); 
    } 

    @Override 
    public void start() throws Exception { 
    vertx.createHttpServer().requestHandler(req -> { 
    req.response().putHeader("content-type", "text/html").end(" 
    Hello from vert.x! 
    "); 

    }).listen(8080); 
    } 
    } 

答えて

1

私たちは通常、Javaで行ういるのHttpClientを閉じる必要があります。 end()だけが接続を閉じていません。

public class Client extends AbstractVerticle { 

// Convenience method so you can run it in your IDE 
public static void main(String[] args) { 
    Runner.runExample(Client.class); 
} 

@Override 
public void start() throws Exception { 
    HttpClient httpClient = vertx.createHttpClient().getNow(8080, "localhost", "/", resp -> { 
     System.out.println("Got response " + resp.statusCode()); 
     resp.bodyHandler(body -> { 
      System.out.println("Got data " + body.toString("ISO-8859-1")); 
      httpClient.close(); 
     }); 
    }); 
} 
} 
:httpClient.close()が必要です....これは私の問題..

変更されたコードを解きます

関連する問題