使用 RestTemplate 调用外部 REST 端点时出错
Error on external REST endpoint call using RestTemplate
我的代码在到达这一行时中断。
String resp = restTemplate.postForObject(URL, json, String.class);
在我的本地主机上它工作正常但在 dev-env 服务器上,错误是:
Error occured in java.lang.NoSuchMethodError:
com.microsoft.applicationinsights.agent.internal.coresync.impl.ImplementationsCoordinator.httpMethodFinished(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IJ)V
dev-env 是 Azure 应用服务,包括 Java 8 和 Tomcat 9.
这似乎是一个库问题:不知何故,您的环境有同一个库的两个不兼容版本。
就 运行
mvn dependency:tree
或手动删除无效的 jar。
我得到了问题和解决方案(对于其他会遇到与发布的问题完全相同的问题的人):
问题:restTemplate.postForObject()
失败,因为存在冲突
我在 setConnectTimeout(10000);
中使用
@Bean
public RestTemplate restTemplate(){
return new RestTemplate(clientHttpRequestFactory());
}
private ClientHttpRequestFactory clientHttpRequestFactory(){
HttpComponentsClientHttpRequestFactory .......
factory.setConnectTime(...);
return factory
}
当我从 restTemplate 中删除 clientHttpRequestFactory()
并配置没有连接超时的默认值时,问题就解决了。现在不冲突了。
@Gaurav 我会标记你的回答,因为你的回答让我了解了依赖冲突问题。
我的代码在到达这一行时中断。
String resp = restTemplate.postForObject(URL, json, String.class);
在我的本地主机上它工作正常但在 dev-env 服务器上,错误是:
Error occured in java.lang.NoSuchMethodError: com.microsoft.applicationinsights.agent.internal.coresync.impl.ImplementationsCoordinator.httpMethodFinished(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IJ)V
dev-env 是 Azure 应用服务,包括 Java 8 和 Tomcat 9.
这似乎是一个库问题:不知何故,您的环境有同一个库的两个不兼容版本。 就 运行
mvn dependency:tree
或手动删除无效的 jar。
我得到了问题和解决方案(对于其他会遇到与发布的问题完全相同的问题的人):
问题:restTemplate.postForObject()
失败,因为存在冲突
我在 setConnectTimeout(10000);
中使用
@Bean
public RestTemplate restTemplate(){
return new RestTemplate(clientHttpRequestFactory());
}
private ClientHttpRequestFactory clientHttpRequestFactory(){
HttpComponentsClientHttpRequestFactory .......
factory.setConnectTime(...);
return factory
}
当我从 restTemplate 中删除 clientHttpRequestFactory()
并配置没有连接超时的默认值时,问题就解决了。现在不冲突了。
@Gaurav 我会标记你的回答,因为你的回答让我了解了依赖冲突问题。