我有一个使用(node:1236) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` or `createConnection()`.
See http://mongoosejs.com/docs/connections.html#use-mongo-client
Error: listen EADDRINUSE 0.0.0.0:9000
at Object.exports._errnoException (util.js:1020:11)
at exports._exceptionWithHostPort (util.js:1043:20)
at Server._listen2 (net.js:1262:14)
at listen (net.js:1298:10)
at net.js:1408:9
at _combinedTickCallback (internal/process/next_tick.js:83:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
来调用RestController服务的http端点的客户端类。
当我使用WireMock进行测试时,它从不调用AsyncRestTemplate
方法。
当我没有为其余模板定义自己的错误处理程序时,它会永远挂起。 (它似乎挂在onFailure
)
如果我定义自己的错误处理程序并从okhttp3.internal.NamedRunnable.run
方法返回(并且不传递给super的方法),那么它会从handleError()
调用我的'onSuccess'方法。
如何调用ListenableFuture
?
onFailure
答案 0 :(得分:0)
线索使用看起来是正确的。
使用以下代码onFailure工作。由于调用异步,您需要一些超时或CountDownLatch或其他同步器,以确保您的测试将运行,除非您的客户端获得结果或失败:
ListenableFuture<String> response = restTemplate.execute(url, HttpMethod.GET, new AsyncRequestCallback() {
@Override
public void doWithRequest(AsyncClientHttpRequest request) throws IOException {
}
}, new ResponseExtractor<String>() {
@Override
public String extractData(ClientHttpResponse response) throws IOException {
return new Scanner(response.getBody()).useDelimiter("\\A").next() ;
}
});
response.addCallback(new ListenableFutureCallback<String>() {
@Override
public void onFailure(Throwable ex) {
ex.printStackTrace();
}
@Override
public void onSuccess(String result) {
System.out.println(result);
}
});
TimeUnit.SECONDS.sleep(2);