Tadayoshi Sato created CAMEL-12873:
--------------------------------------

             Summary: 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
         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: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.



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

Reply via email to