java.lang.ClassNotFoundException: org.reactivestreams.Publisher не найден при использовании компонента camelahc - PullRequest
1 голос
/ 18 марта 2019

Я хочу вызвать внешнюю http-службу, используя компонент ahc, в pom.xml добавлена ​​зависимость camel-ahc, а в karaf установлена ​​функция camel-ahc:

feature:install camel-ahc

связок, которые были добавлены:

верблюд-AHC а также wrap_file__home_ossl_.m2_repository_org_asynchttpclient_async-HTTP-client_2.4.3_async-HTTP-сл ...

и мой код:

    <camelContext id="jetty-ws-camel-ahc" xmlns="http://camel.apache.org/schema/blueprint" >
       <route id="ahc-route">
        <from uri="timer://webinar?period=20000"/> 
              <setHeader headerName="CamelHttpMethod">
                  <constant>GET</constant>
              </setHeader>
          <to uri="ahc:http://217.0.0.0:3030/sendSMS/mynumber/bye"/>
      <log message="message sent!"/>
       </route>
</camelContext>

но у меня есть предупреждение, и запрос не отправлен на адрес http: WARN [Blueprint Extender: 3] Слушатель, вызвавший исключение, будет игнорироваться java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org / реактивные потоки / издатель

Вызывается: java.lang.ClassNotFoundException: org.reactivestreams.Publisher, не найденный wrap_file__home_ossl_.m2_repository_org_asynchttpclient_async-http-client_2.4.3_async-http-client-2.4.3.j___t2. *

что мне делать?

1 Ответ

0 голосов
/ 20 марта 2019

Проблема заключается в автоматическом переносе артефакта org.asynchttpclient/async-http-client.

Обтекание по умолчанию делает все предложения Import-Package необязательными, что иногда затрудняет создание надежной проводной установки, поскольку при просмотре преобразователяв упакованном пакете перед просмотром тех, которые экспортируют «необязательные» пакеты, они не будут соединены вместе, и, поскольку они являются необязательными, распознаватель с радостью пропустит их, даже если они появятся через микросекунду позже.

Для проверкитаким образом, вы можете bundle:refresh <id> связать async-http-client и посмотреть bundle:tree-show <id>, являются ли пакеты еще не подключенными (помечены как WARNING).

Чтобы надежно исправить это, вы можетесоздайте свою собственную функцию на основе официальной функции Apache Camel и измените упаковку, чтобы сделать определенные импорты обязательными (например, добавьте &Import-Package=org.reactivestreams,*;resolution:=optional к оператору wrap:).

Также обратите внимание на WrapПротокол .

...