简体   繁体   中英

Why org.apache.servicemix.bundles.elasticsearch-client does not find org.apache.http.client.AuthCache

Problem

I'm trying to use the camel bundle camel-elasticsearch-rest 2.22.2 in a karaf 4.2.2 environment.

When I'm installing the camel bundle camel-elasticsearch-rest everything goes well and it install automatically its dependencies ( screenshot of camel-elasticsearch-rest install bundle in karaf ):

  • org.apache.servicemix.bundles.elasticsearch ( org.apache.servicemix.bundles/org.apache.servicemix.bundles.elasticsearch/6.1.1_1 )
  • org.apache.servicemix.bundles.elasticsearch-client ( org.apache.servicemix.bundles/org.apache.servicemix.bundles.elasticsearch-client/6.1.1_1 )
  • org.apache.httpcomponents.httpasyncclient ( org.apache.httpcomponents/httpasyncclient-osgi/4.1.3 )
  • org.apache.httpcomponents.httpclient ( org.apache.httpcomponents/httpclient-osgi/4.5.5 )
  • org.apache.httpcomponents.httpcore ( org.apache.httpcomponents/httpcore-osgi/4.4.9 )

Code

In my code I call the camel-elasticsearch-rest in this way:

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;

public class ServiceRouteBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {

        CamelContext context = this.getContext();
        restConfiguration()
                .component("jetty")
                .host("localhost")
                .port(8200)
                .contextPath("/api")
                .dataFormatProperty("prettyPrint", "true")
                .apiProperty("cors", "true");

        rest("/elastic/test")
                .get("/")
                .route()
                .setBody(simple("{ \"indexName\": \"test-index\" }"))
                .to("elasticsearch-rest://elasticsearch?hostAddresses=127.0.0.1:9200&operation=INDEX&indexName=test-index&indexType=sample");
    }
}

I have installed my jar bundle on karaf, but when camel context starting I'm receiving this warning that cause the camel routes shutdown:

09:58:44.595 WARN [fileinstall-C:\\Program Files\\apache-karaf\\4.2.2/deploy] Listener caused an exception, will be ignored java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/http/client/AuthCache at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:?] at java.util.concurrent.AbstractExecutorService.doInvokeAny(AbstractExecutorService.java:193) ~[?:?] at java.util.concurrent.AbstractExecutorService.invokeAny(AbstractExecutorService.java:225) ~[?:?] at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper$4.call(ScheduledExecutorServiceWrapper.java:185) ~[44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper$15.call(ScheduledExecutorServiceWrapper.java:446) ~[44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.utils.threading.RWLock.runReadOperation(RWLock.java:33) ~[44: org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper.runUnlessShutdown(ScheduledExecutorServiceWrapper.java:443) ~[44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper.invokeAny(ScheduledExecutorServiceWrapper.java:180) ~[44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.container.BlueprintEventDispatcher.callListener(BlueprintEventDispatcher.java:188) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.container.BlueprintEventDispatcher.callListeners(BlueprintEventDispatcher.java:178) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.container.BlueprintEventDispatcher.blueprintEvent(BlueprintEventDispatcher.java:133) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:427) [44:org.apache.aries.bluep rint.core:1.10.1] at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:278) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:299) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:268) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:264) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:254) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified (BundleHookBundleTracker.java:433) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422) [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1179) [?:?] at org.apache.felix.framework.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:730) [?:?] at org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:485) [?:?] at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4579) [?:?] at org.apache.felix.framework.Felix.startBundle(Felix.java:2174 ) [?:?] at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998) [?:?] at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) [10:org.apache.felix.fileinstall:3.6.4] at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) [10:org.apache.felix.fileinstall:3.6.4] at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:520) [10:org.apache.felix.fileinstall:3.6.4] at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) [10:org.apache.felix.fileinstall:3.6.4] at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) [10:org.apache.felix.fileinstall:3.6.4] Caused by: java.lang.NoClassDefFoundError: org/apache/http/client/AuthCache at org.apache.camel.component.elasticsearch.ElasticsearchProducer.createClient(ElasticsearchProducer.java:255) ~[?:?] at org.apache.camel.component.elasticsearch.Elasti csearchProducer.startClient(ElasticsearchProducer.java:246) ~[?:?] at org.apache.camel.component.elasticsearch.ElasticsearchProducer.doStart(ElasticsearchProducer.java:237) ~[?:?] at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) ~[?:?] at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75) ~[?:?] at org.apache.camel.impl.DeferServiceStartupListener.onCamelContextStarted(DeferServiceStartupListener.java:49) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3863) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:3642) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3494) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:209) ~[?:?] at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3253) ~[?:?] at org.apache.camel.impl.DefaultCamelContext$2. call(DefaultCamelContext.java:3249) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3272) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3249) ~[?:?] at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3165) ~[?:?] at org.apache.camel.blueprint.BlueprintCamelContext.start(BlueprintCamelContext.java:243) ~[?:?] at org.apache.camel.blueprint.BlueprintCamelContext.maybeStart(BlueprintCamelContext.java:283) ~[?:?] at org.apache.camel.blueprint.BlueprintCamelContext.blueprintEvent(BlueprintCamelContext.java:177) ~[?:?] at org.apache.aries.blueprint.container.BlueprintEventDispatcher$3.call(BlueprintEventDispatcher.java:190) ~[?:?] at org.apache.aries.blueprint.container.BlueprintEventDispatcher$3.call(BlueprintEventDispatcher.java:188) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:2 66) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:?] at java.lang.Thread.run(Thread.java:748) ~[?:?] Caused by: java.lang.ClassNotFoundException: org.apache.http.client.AuthCache not found by org.apache.servicemix.bundles.elasticsearch-client [124] at org.apache.felix.framework.BundleWiringImpl.findClassOrResource ByDelegation(BundleWiringImpl.java:1639) ~[?:?] at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80) ~[?:?] at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053) ~[?:?] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:?] at org.apache.camel.component.elasticsearch.ElasticsearchProducer.createClient(ElasticsearchProducer.java:255) ~[?:?] at org.apache.camel.component.elasticsearch.ElasticsearchProducer.startClient(ElasticsearchProducer.java:246) ~[?:?] at org.apache.camel.component.elasticsearch.ElasticsearchProducer.doStart(ElasticsearchProducer.java:237) ~[?:?] at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) ~[?:?] at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75) ~[?:?] at org.apache.camel.impl.DeferServiceStartupListener.onCamelContextStarted(DeferServiceStartupListener.java:49) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.safelyStartRo uteServices(DefaultCamelContext.java:3863) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:3642) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3494) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:209) ~[?:?] at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3253) ~[?:?] at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3249) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3272) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3249) ~[?:?] at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) ~[?:?] at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3165) ~[?:?] at org.apache.camel.blueprint.BlueprintCamelContext.start(BlueprintCamelContext.java:243) ~[?:?] at org.apac he.camel.blueprint.BlueprintCamelContext.maybeStart(BlueprintCamelContext.java:283) ~[?:?] at org.apache.camel.blueprint.BlueprintCamelContext.blueprintEvent(BlueprintCamelContext.java:177) ~[?:?] at org.apache.aries.blueprint.container.BlueprintEventDispatcher$3.call(BlueprintEventDispatcher.java:190) ~[?:?] at org.apache.aries.blueprint.container.BlueprintEventDispatcher$3.call(BlueprintEventDispatcher.java:188) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Schedu ledThreadPoolExecutor.java:293) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:?] at java.lang.Thread.run(Thread.java:748) ~[?:?]


Question

My question is why org.apache.servicemix.bundles.elasticsearch-client does not find the class org.apache.http.client.AuthCache .

This class should be in the dependency org.apache.httpcomponents.httpclient that is correctly installed on karaf.

I have seen that in the org.apache.servicemix.bundles.elasticsearch-client bundle there aren't imported packages ( screenshot of the imported packages ), it is normal? It's a bug or I'm missing something?

elasticsearch-client is not supported in KARAF(OSGi)

ref: https://github.com/apache/camel/blob/camel-2.23.x/platforms/karaf/features/src/main/resources/features.xml#L617

discussion on elasticsearch-client OSGi support: https://github.com/elastic/elasticsearch/issues/28707

However you can build this as OSGi bundle as explained here: Howto: osgi and shared packages?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM