3
我正在使用球衣客戶端3.0快照。JerseyClient異步調用似乎離開掛線
我做這樣的事情:
final Client client = createClient();
...
Builder builder = target.request();
for (final Entry<String, String> entry : getHeaders().entrySet()) {
builder = builder.header(entry.getKey(), entry.getValue());
}
final Builder finalBuilder = builder;
executor.submit(() -> {
final Entity<?> entity = createPostEntity();
futureResponse = finalBuilder.async().post(entity);
try {
response = futureResponse.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
consumeResponse(response);
} catch (ExecutionException | TimeoutException | InterruptedException | IOException e) {
errorConsumer.accept(e);
}
});
if (futureResponse != null) {
try {
futureResponse.cancel(true);
} catch (final Exception e) {
//does nothing, now we try keep closing resources
}
}
if (response != null) {
try {
response.close();
} catch (final Exception e) {
//does nothing, now we try keep closing resources
}
}
... //等待響應和閱讀或任何
client.close();
和一個新的線程保持每次出現創建並銷燬其中一個客戶。
有破壞這些線程的安全方法嗎? 這是預期的行爲? 我做錯了什麼?