Apache Camel - ошибка производителя шаблона Jetty - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь создать метод, который вызывает веб-сервис с использованием верблюда и молы.Однако мой 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
'''

...