仅当使用CloseableHttpAsyncClient时才出现java.net.UnknownHostException
我使用SpringBoot构建了一个REST应用程序,该应用程序反过来调用另一个第三方RESTAPI。我试图将Apache的HTTPComponents仅当使用CloseableHttpAsyncClient时才出现java.net.UnknownHostException,java,rest,spring-boot,apache-httpcomponents,Java,Rest,Spring Boot,Apache Httpcomponents,我使用SpringBoot构建了一个REST应用程序,该应用程序反过来调用另一个第三方RESTAPI。我试图将Apache的HTTPComponentsCloseableHttpAsyncClient与Spring的AsyncRestTemplate结合使用。以下是我在Spring Boot应用程序中设置AsyncRestTemplate的方法: @Bean public AsyncRestTemplate asyncRestTemplate() throws IOReactorExceptio
CloseableHttpAsyncClient
与Spring的AsyncRestTemplate
结合使用。以下是我在Spring Boot应用程序中设置AsyncRestTemplate的方法:
@Bean
public AsyncRestTemplate asyncRestTemplate() throws IOReactorException {
ConnectingIOReactor ioReactor = new DefaultConnectingIOReactor();
PoolingNHttpClientConnectionManager cm =
new PoolingNHttpClientConnectionManager(ioReactor);
CloseableHttpAsyncClient client =
HttpAsyncClients.custom().setConnectionManager(cm).build();
client.start();
return new AsyncRestTemplate(
new HttpComponentsAsyncClientHttpRequestFactory(client));
}
调用第三方REST API端点的代码如下所示:
ListenableFuture<ResponseEntity<String>> restFuture =
asyncRestTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class);
代码执行得很好。这是在Mac(OS X El Capitan)上。Spring引导版本为1.4.2、Java 8和HttpAsyncClient 4.1.2。我如何解决这个问题
注意:我将实际主机名替换为虚拟主机名(
api.3rdpartyservices.com
),因为我无法透露该信息。感谢@JimGarrison的评论,所以我可以向大家澄清这一点。Hostapi.3rdpartyservices.com
在这里没有解析?问题不是为什么一个方法失败,而是为什么一个方法没有失败。@JimGarrison我用一个虚拟主机名替换了实际主机名。对不起,我应该在我的问题中澄清这一点。希望这能解决您的评论。不要混淆对调试问题至关重要的信息。“如果你不能发布这些信息,那么请确保你已经解决了所有明显的问题,并在帖子中对此进行解释。”JimGarrison point指出。我确实在问题的最后补充了这个细节,所以希望它不会继续引起混乱。
java.net.UnknownHostException: <<api.3rdpartyservices.com>>
at java.net.InetAddress.getAllByName0(InetAddress.java:1280) ~[na:1.8.0_112]
at java.net.InetAddress.getAllByName(InetAddress.java:1192) ~[na:1.8.0_112]
at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[na:1.8.0_112]
at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45) ~[httpclient-4.5.2.jar:4.5.2]
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.resolveRemoteAddress(PoolingNHttpClientConnectionManager.java:609) ~[httpasyncclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.resolveRemoteAddress(PoolingNHttpClientConnectionManager.java:580) ~[httpasyncclient-4.1.2.jar:4.1.2]
at org.apache.http.nio.pool.AbstractNIOConnPool.processPendingRequest(AbstractNIOConnPool.java:427) ~[httpcore-nio-4.4.5.jar:4.4.5]
at org.apache.http.nio.pool.AbstractNIOConnPool.lease(AbstractNIOConnPool.java:276) ~[httpcore-nio-4.4.5.jar:4.4.5]
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.requestConnection(PoolingNHttpClientConnectionManager.java:266) ~[httpasyncclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.nio.client.AbstractClientExchangeHandler.requestConnection(AbstractClientExchangeHandler.java:363) ~[httpasyncclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.start(DefaultClientExchangeHandlerImpl.java:125) ~[httpasyncclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:141) ~[httpasyncclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:75) ~[httpasyncclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:108) ~[httpasyncclient-4.1.2.jar:4.1.2]
at org.springframework.http.client.HttpComponentsAsyncClientHttpRequest.executeInternal(HttpComponentsAsyncClientHttpRequest.java:96) ~[spring-web-4.3.4.RELEASE.jar:4.3.4.RELEASE]
@Bean
public AsyncRestTemplate asyncRestTemplate() throws IOReactorException {
return new AsyncRestTemplate(
new HttpComponentsAsyncClientHttpRequestFactory());
}