Kamil created CAMEL-13461:
-----------------------------

             Summary: Http4 Component is not propagated correctly in OSGI 
environment
                 Key: CAMEL-13461
                 URL: https://issues.apache.org/jira/browse/CAMEL-13461
             Project: Camel
          Issue Type: Bug
          Components: camel-http4
    Affects Versions: 2.23.1
            Reporter: Kamil


I'm using Camel 2.23.1 with Karaf 4.2.5, with following features installed:
{code:java}
camel camel-scr camel-stream camel-http4 camel-jackson camel-kafka camel-quartz2
{code}
I have one bundle (let's call it context-provder) which consists of Activator 
only:
{code:java}
public class Activator implements BundleActivator {
  private ServiceRegistration<CamelContext> registrationCamelContext;
  private CamelContext camelContext;

  @Override
  public void start(final BundleContext bundleContext) throws Exception {
    camelContext = new OsgiDefaultCamelContext(bundleContext);
    registrationCamelContext = 
bundleContext.registerService(CamelContext.class, camelContext, null);
    camelContext.start();
  }
}
{code}
 And the second bundle (let's call it context-consumer) which uses several 
Camel componets (kafka, quartz2, http4)
{code:java}
@Component(
    immediate = true,
    service = MyService.class
)
public class MyServiceImpl implements MyService {

  @Activate
  public NotificationServiceImpl(@Reference final CamelContext camelContext) 
throws Exception {
    super(camelContext)
    camelContext.addRoutes(this);
  }
 @Override
  public void configure() throws Exception {
     //routes using http4, quartz2, kafka etc.
  }
}
{code}
While all other routes are "seen" by Camel and work without any problems, http4 
is exception to the rule. 
 Camel throws:
{code:java}
org.apache.karaf.features.internal.util.MultiException: Error restarting 
bundles:
        Activator start error in bundle context.consumer [150].
        at 
org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:1005)
        at 
org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1058)
        at 
org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:994)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.base/java.lang.Thread.run(Thread.java:844)
        Suppressed: org.osgi.framework.BundleException: Activator start error 
in bundle context.consumer [150].
                at 
org.apache.felix.framework.Felix.activateBundle(Felix.java:2290)
                at org.apache.felix.framework.Felix.startBundle(Felix.java:2146)
                at 
org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)
                at 
org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984)
                at 
org.apache.karaf.features.internal.service.BundleInstallSupportImpl.startBundle(BundleInstallSupportImpl.java:161)
                at 
org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1149)
                at 
org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:997)
                ... 6 more
        Caused by: java.lang.IllegalArgumentException: Cannot find endpoint 
with scheme https4
                at 
org.apache.camel.runtimecatalog.AbstractCamelCatalog.endpointProperties(AbstractCamelCatalog.java:542)
                at 
org.apache.camel.http.common.HttpSendDynamicAware.prepare(HttpSendDynamicAware.java:57)
                at 
org.apache.camel.processor.SendDynamicProcessor.process(SendDynamicProcessor.java:118)
                at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
                at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
                at 
org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
                at 
org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
                at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
                at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
                at 
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:60)
                at 
org.apache.camel.impl.DeferProducer.process(DeferProducer.java:72)
                at 
org.apache.camel.component.bean.AbstractCamelInvocationHandler$1.call(AbstractCamelInvocationHandler.java:193)
                at 
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                at 
org.apache.camel.component.bean.AbstractCamelInvocationHandler.doInvoke(AbstractCamelInvocationHandler.java:211)
                at 
org.apache.camel.component.bean.AbstractCamelInvocationHandler.invokeProxy(AbstractCamelInvocationHandler.java:173)
                at 
org.apache.camel.component.bean.CamelInvocationHandler.doInvokeProxy(CamelInvocationHandler.java:51)
                at 
org.apache.camel.component.bean.AbstractCamelInvocationHandler.invoke(AbstractCamelInvocationHandler.java:90)
                at com.sun.proxy.$Proxy113.send(Unknown Source)
                at 
context.consumer.MyServiceImpl.callCamel(MyServiceImpl.java:87)
                at 
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:941)
                at 
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:870)
                at 
org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
                at 
org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
                at 
org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:318)
                at 
org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)
                at context.consumer.MyActivator.start(MyActivator.java:43)
                at 
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:697)
                at 
org.apache.felix.framework.Felix.activateBundle(Felix.java:2240)
                ... 12 more
{code}
While - as I said - other components works just fine.

One of the workaround is to move Activator to context-consumer bundle - then 
Camel magically starts to "see" http4 component.

Other workaround is to register component explicitly by:
{code:java}
camelContext.addComponent("http4", new HttpComponent());
{code}
in the context-provider Activator, but then - why kafka and quartz2 does not 
have such problems?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to