Я пытаюсь создать метод, который вызывает веб-сервис с использованием верблюда и молы.Однако мой org.eclipse.jetty.client.HttpClient всегда имеет значение null и не уверен почему.Я использую версию 2.24.2 верблюда.Я использовал более старую версию верблюда (2.16.2), но затем я получил BufferLimitExceed для ответа.Последняя версия даже не инициирует соединение.Метод отправки для шаблона источника выбрасывает нулевой указатель.
Мой общий метод:
protected static ThreadLocal<ProducerTemplate> templates = new ThreadLocal<>();
protected static ThreadLocal<CamelContext> camelContexts = new ThreadLocal<>();
private static List<Output> executeWebService(Processor restClientProcessor, String url, int timeout, boolean throwExceptionOnFailure) throws EndpointException {
SimpleRegistry register = new SimpleRegistry();
camelContexts.set(new DefaultCamelContext(register));
JettyHttpComponent component = new JettyHttpComponent9();
(camelContexts.get()).addComponent("jetty", component);
templates.set((camelContexts.get()).createProducerTemplate());
camelContexts.get().setStreamCaching(true);
StringBuilder req = new StringBuilder();
req.append("jetty:").append(url).append((url.contains("?") ? "&" : "?")).append("throwExceptionOnFailure=").append(throwExceptionOnFailure).append("&soTimeout=").append(timeout);
Exchange exchange = (templates.get()).send(req.toString(), restClientProcessor);
LOG.info("RestClient sent request.");
if (exchange.getException() != null && !(exchange.getException() instanceof SocketTimeoutException)) {
LOG.error("No Response from Server.");
throw new EndpointException(exchange.getException());
} else {
return handleResponse(exchange.getOut(), LOG);
}
}
При запуске я получаю следующую ошибку:
Caused by: java.lang.NullPointerException
at org.eclipse.jetty.client.HttpDestination.newExchangeQueue(HttpDestination.java:133)
at org.eclipse.jetty.client.HttpDestination.<init>(HttpDestination.java:76)
at org.eclipse.jetty.client.PoolingHttpDestination.<init>(PoolingHttpDestination.java:25)
at org.eclipse.jetty.client.http.HttpDestinationOverHTTP.<init>(HttpDestinationOverHTTP.java:32)
at org.eclipse.jetty.client.http.HttpClientTransportOverHTTP.newHttpDestination(HttpClientTransportOverHTTP.java:51)
at org.eclipse.jetty.client.HttpClient.destinationFor(HttpClient.java:544)
at org.eclipse.jetty.client.HttpClient.send(HttpClient.java:577)
at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:727)
at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:719)
at org.apache.camel.component.jetty9.JettyContentExchange9.send(JettyContentExchange9.java:264)
at org.apache.camel.component.jetty.JettyHttpProducer.processInternal(JettyHttpProducer.java:278)
at org.apache.camel.component.jetty.JettyHttpProducer.process(JettyHttpProducer.java:89)
at org.apache.camel.processor.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:186)
at org.apache.camel.processor.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:86)
at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:541)
at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:506)
at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:369)
at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:506)
at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:229)
at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:144)
at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:130)
at gts.testauto.interaction.http.utils.RestClient.executeWebService(RestClient.java:44)
... 67 more
'''