java.lang.IllegalArgumentException:比较方法违反了它的一般合同!在春天休息模板

时间:2018-03-08 09:02:35

标签: spring-boot resttemplate

在使用Spring的RestTemplate调用REST URL时,我遇到了一个奇怪的问题。我正在使用Spring Boot。

错误仅在大约 10到15次成功通话之后发生,之后不正常。我可以在错误之前顺利地交换数据,在前1到15个呼叫中。网址与someresturl/param1/param2/param3类似。

     public ResponseEntity<String> callRestUrl(CustomReqClass req) {

        restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
            restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
            StringBuilder url = new StringBuilder("someresturl");

   finishTaskUrl.append("/").append(param1).append("/").append(param2).append("/").append(param3);        
            ResponseEntity<String> response = null;

            HttpEntity<CustomReqClass> request = new HttpEntity<CustomReqClass>(req, getHTTPHeaders());

       try {

              //first approach
                response = restTemplate.postForEntity(url.toString(), request, String.class, Collections.<String, String>emptyMap());

               //second approach
               response = restTemplate.exchange(url.toString(), HttpMethod.POST, request, String.class);

            } catch (Exception e) {
                LOGGER.info("Error calling url" + e);
            }
            return response;
        }

   public MultiValueMap<String, String> getHTTPHeaders() {
    MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
    headers.add("Authorization", "Basic authabcdxyz");
    headers.add("Content-Type", "application/json");
    return headers;
}

这里我在我正在使用它的类中自动装配restTemplate对象。 我已经尝试了上述方法 postForEntity 交换的Rest模板。两者都发生错误。

我在几次成功尝试后获得的例外情况:

  

java.lang.IllegalArgumentException:比较方法违反了其一般合同!

另外一个想法是,Spring Scheduler机制正在安排上面的代码。调度程序中使用的内部线程是否可能导致此问题?

0 个答案:

没有答案