我有一些代码在从测试用例调用时工作正常,但是当我通过HTTP调用它时(使用get请求)我得到一个奇怪的错误:
ArrayStoreException occured : org.apache.http.impl.cookie.RFC2965VersionAttributeHandler
有没有人对导致这种情况的原因有任何想法?
违规代码(已删除日志记录)如下所示:
public static void deleteIndex(String companyKey, String regionKey) throws IOException {
RestClient client = Elasticsearch.getClient();
HttpEntity query = createQueryForDelete(companyKey, regionKey);
Response response = client.performRequest(
"POST", "/products/_delete_by_query", new HashMap<String, String>(), query);
}
违规行为:
Response response = client.performRequest(
"POST", "/products/_delete_by_query", new HashMap<String, String>(), query);
我已经构建了一个显式调用控制器的测试用例,并且工作正常。所以我不认为它与代码有关,而是与HTTP的工作方式有关。但由于功能代码全部在模型中而不是在控制器中,我无法想象它的区别是什么。
控制器看起来像这样:
public static void deleteIndex(String companyKey, String regionKey) throws IOException {
ElasticIndex.deleteIndex(companyKey,regionKey);
}
ElasticIndex.deleteIndex
是上面最初定义的方法。
关于如何引起ArrayStoreException
的任何线索,将不胜感激。
完整的堆栈跟踪是:
执行异常(在/app/models/ElasticSearch/ElasticIndex.java中 第98行附近)发生ArrayStoreException: org.apache.http.impl.cookie.RFC2965VersionAttributeHandler
play.exceptions.JavaExecutionException: org.apache.http.impl.cookie.RFC2965VersionAttributeHandler at play.mvc.ActionInvoker.invoke(ActionInvoker.java:231)at Invocation.HTTP请求(播放!)引起: java.lang.ArrayStoreException: org.apache.http.impl.cookie.RFC2965VersionAttributeHandler at org.apache.http.impl.cookie.DefaultCookieSpecProvider.create(DefaultCookieSpecProvider.java:92) 在 org.apache.http.client.protocol.RequestAddCookies.process(RequestAddCookies.java:152) 在 org.apache.http.protocol.ImmutableHttpProcessor.process(ImmutableHttpProcessor.java:133) 在 org.apache.http.impl.nio.client.MainClientExec.prepareRequest(MainClientExec.java:520) 在 org.apache.http.impl.nio.client.MainClientExec.prepare(MainClientExec.java:146) 在 org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.start(DefaultClientExchangeHandlerImpl.java:124) 在 org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:141) 在 org.elasticsearch.client.RestClient.performRequestAsync(RestClient.java:343) 在 org.elasticsearch.client.RestClient.performRequestAsync(RestClient.java:325) 在 org.elasticsearch.client.RestClient.performRequest(RestClient.java:218) 在 org.elasticsearch.client.RestClient.performRequest(RestClient.java:191) 在 models.ElasticSearch.ElasticIndex.deleteIndex(ElasticIndex.java:98) 在 models.ElasticSearch.ElasticIndex.deleteIndex(ElasticIndex.java:78) 在controllers.Application.deleteIndex(Application.java:304)at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:544) 在play.mvc.ActionInvoker.invoke(ActionInvoker.java:494)at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:489) 在 play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:458) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:162)... 1更多