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)