[
https://issues.apache.org/jira/browse/CAMEL-12873?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tadayoshi Sato updated CAMEL-12873:
-----------------------------------
Description:
There was a configuration example for {{HttpRegistry}}, which is introduced by
CAMEL-3549, under
{{tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/servlet/}}.
The test itself was removed probably because it depended on deprecated Spring
DM, but the use case CAMEL-3549, which is to use a CamelServlet instance across
OSGi bundles, exemplified by the test should be still valid and maintained.
However, with the latest Camel when deploying the attached example
({{camel-example-servlet-httpregistry-blueprint.zip}}) to Karaf it fails to
deploy throwing the following error:
{code}
2018-10-09T20:42:54,813 | ERROR | FelixStartLevel | BlueprintContainerImpl
| 52 - org.apache.aries.blueprint.core - 1.9.0 | Unable to start
blueprint container for bundle
camel-example-servlet-httpregistry-blueprint/2.23.0.SNAPSHOT
org.osgi.service.blueprint.container.ComponentDefinitionException:
org.apache.aries.proxy.FinalModifierException: The methods protected final void
org.apache.camel.http.common.CamelServlet.service(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
throws javax.servlet.ServletException,java.io.IOException in class
org.apache.camel.http.common.CamelServlet are final.
at
org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:141)
~[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:81)
~[52:org.apache.aries.blueprint.core:1.9.0]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?]
at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:90)
~[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:360)
~[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:190)
~[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:716)
~[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:413)
[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:278)
[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:299)
[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:268)
[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:264)
[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:254)
[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)
[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)
[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)
[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)
[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)
[52:org.apache.aries.blueprint.core:1.9.0]
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.Felix.setActiveStartLevel(Felix.java:1373) [?:?]
at
org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
[?:?]
at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: org.apache.aries.proxy.FinalModifierException: The methods protected
final void
org.apache.camel.http.common.CamelServlet.service(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
throws javax.servlet.ServletException,java.io.IOException in class
org.apache.camel.http.common.CamelServlet are final.
at
org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.getProxySubclass(ProxySubclassGenerator.java:112)
~[?:?]
at
org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.newProxySubclassInstance(ProxySubclassGenerator.java:171)
~[?:?]
at
org.apache.aries.proxy.impl.AsmProxyManager.createNewProxy(AsmProxyManager.java:140)
~[?:?]
at
org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingInterceptingProxy(AbstractProxyManager.java:77)
~[?:?]
at
org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingProxy(AbstractProxyManager.java:42)
~[?:?]
at
org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.createProxy(AbstractServiceReferenceRecipe.java:332)
~[?:?]
at
org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:125)
~[?:?]
... 25 more
{code}
This is clearly because at some point in time {{CamelServlet.service()}} method
was marked as {{final}}. We should remove it to restore the use case.
was:
There was a configuration example for {{HttpRegistry}}, which is introduced by
CAMEL-3549, under
{{tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/servlet/}}.
The test itself was removed probably because it depended on deprecated Spring
DM, but the use case CAMEL-3549, which is to use a CamelServlet instance across
OSGi bundles, exemplified by the test should be still valid and maintained.
However, with the latest Camel when deploying the attached example
({{camel-example-servlet-httpregistry-blueprint.zip}}) to Karaf it fails to
deploy throwing the following error:
{code}
2018-10-09T20:42:51,905 | ERROR | Blueprint Extender: 1 |
BlueprintContainerImpl | 52 - org.apache.aries.blueprint.core - 1.9.0
| Unable to start blueprint container for bundle camel-route.xml/0.0.0
org.osgi.service.blueprint.container.ComponentDefinitionException:
org.apache.aries.proxy.FinalModifierException: The methods protected final void
org.apache.camel.http.common.CamelServlet.service(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
throws javax.servlet.ServletException,java.io.IOException in class
javax.servlet.http.HttpServlet are final.
at
org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:141)
~[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:81)
~[52:org.apache.aries.blueprint.core:1.9.0]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?]
at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:90)
~[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:360)
~[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:190)
~[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:716)
~[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:413)
[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:278)
[52:org.apache.aries.blueprint.core:1.9.0]
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
at
org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106)
[52:org.apache.aries.blueprint.core:1.9.0]
at
org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:45)
[52:org.apache.aries.blueprint.core:1.9.0]
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: org.apache.aries.proxy.FinalModifierException: The methods protected
final void
org.apache.camel.http.common.CamelServlet.service(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
throws javax.servlet.ServletException,java.io.IOException in class
javax.servlet.http.HttpServlet are final.
at
org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.scanForFinalModifiers(ProxySubclassGenerator.java:353)
~[?:?]
at
org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.getProxySubclass(ProxySubclassGenerator.java:128)
~[?:?]
at
org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.newProxySubclassInstance(ProxySubclassGenerator.java:171)
~[?:?]
at
org.apache.aries.proxy.impl.AsmProxyManager.createNewProxy(AsmProxyManager.java:140)
~[?:?]
at
org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingInterceptingProxy(AbstractProxyManager.java:77)
~[?:?]
at
org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingProxy(AbstractProxyManager.java:42)
~[?:?]
at
org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.createProxy(AbstractServiceReferenceRecipe.java:332)
~[?:?]
at
org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:125)
~[?:?]
... 19 more
{code}
This is clearly because at some point in time {{CamelServlet.service()}} method
was marked as {{final}}. We should remove it to restore the use case.
> camel-servlet - Example for HttpRegistry no longer works throwing
> FinalModifierException
> ----------------------------------------------------------------------------------------
>
> Key: CAMEL-12873
> URL: https://issues.apache.org/jira/browse/CAMEL-12873
> Project: Camel
> Issue Type: Bug
> Components: camel-http-common, camel-servlet
> Affects Versions: 2.22.1
> Reporter: Tadayoshi Sato
> Assignee: Tadayoshi Sato
> Priority: Major
> Attachments: camel-example-servlet-httpregistry-blueprint.zip
>
>
> There was a configuration example for {{HttpRegistry}}, which is introduced
> by CAMEL-3549, under
> {{tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/servlet/}}.
> The test itself was removed probably because it depended on deprecated
> Spring DM, but the use case CAMEL-3549, which is to use a CamelServlet
> instance across OSGi bundles, exemplified by the test should be still valid
> and maintained.
> However, with the latest Camel when deploying the attached example
> ({{camel-example-servlet-httpregistry-blueprint.zip}}) to Karaf it fails to
> deploy throwing the following error:
> {code}
> 2018-10-09T20:42:54,813 | ERROR | FelixStartLevel | BlueprintContainerImpl
> | 52 - org.apache.aries.blueprint.core - 1.9.0 | Unable to start
> blueprint container for bundle
> camel-example-servlet-httpregistry-blueprint/2.23.0.SNAPSHOT
> org.osgi.service.blueprint.container.ComponentDefinitionException:
> org.apache.aries.proxy.FinalModifierException: The methods protected final
> void
> org.apache.camel.http.common.CamelServlet.service(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
> throws javax.servlet.ServletException,java.io.IOException in class
> org.apache.camel.http.common.CamelServlet are final.
> at
> org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:141)
> ~[52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:81)
> ~[52:org.apache.aries.blueprint.core:1.9.0]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?]
> at
> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:90)
> ~[52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:360)
> ~[52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:190)
> ~[52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:716)
> ~[52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:413)
> [52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:278)
> [52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:299)
> [52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:268)
> [52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:264)
> [52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:254)
> [52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)
> [52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)
> [52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)
> [52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)
> [52:org.apache.aries.blueprint.core:1.9.0]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)
> [52:org.apache.aries.blueprint.core:1.9.0]
> 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.Felix.setActiveStartLevel(Felix.java:1373) [?:?]
> at
> org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
> [?:?]
> at java.lang.Thread.run(Thread.java:748) [?:?]
> Caused by: org.apache.aries.proxy.FinalModifierException: The methods
> protected final void
> org.apache.camel.http.common.CamelServlet.service(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
> throws javax.servlet.ServletException,java.io.IOException in class
> org.apache.camel.http.common.CamelServlet are final.
> at
> org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.getProxySubclass(ProxySubclassGenerator.java:112)
> ~[?:?]
> at
> org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.newProxySubclassInstance(ProxySubclassGenerator.java:171)
> ~[?:?]
> at
> org.apache.aries.proxy.impl.AsmProxyManager.createNewProxy(AsmProxyManager.java:140)
> ~[?:?]
> at
> org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingInterceptingProxy(AbstractProxyManager.java:77)
> ~[?:?]
> at
> org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingProxy(AbstractProxyManager.java:42)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.createProxy(AbstractServiceReferenceRecipe.java:332)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:125)
> ~[?:?]
> ... 25 more
> {code}
> This is clearly because at some point in time {{CamelServlet.service()}}
> method was marked as {{final}}. We should remove it to restore the use case.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)