You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Tadayoshi Sato (JIRA)" <ji...@apache.org> on 2018/10/10 04:16:00 UTC

[jira] [Created] (CAMEL-12873) camel-servlet - Example for HttpRegistry no longer works throwing FinalModifierException

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)