Cómo aplicar org.apache.camel.Processor personalizado en la ruta Camel implementado en ServiceMix independiente

Uno de mis intentos de resolver miotro problema es implementar un procesador personalizado de camello y usarlo en algunas rutas declaradas en Spring DSL implementadas en ServiceMix independiente.

El nuevo problema es que no sé cómo informarle a ServiceMix sobre mi clase.

In ServiceMix docs está escrito, de forma inmediata, puede implementar un archivo jar en un paquete OSGi válido, así como también despliega rutas en archivos de configuración Spring xml. Pero incluso después de empaquetar mi clase dentro de jar y desplegarla en ServiceMix, al cargar rutas todavía se produce el error:

        Unable to start bundle 236: Unable to resolve stub-services.xml [236](R 236.66): missing requirement [stub-services.xml [236](R 236.66)] osgi.wiring.package; (osgi.wiring.package=ru.home.project) Unresolved requirements: [[stub-services.xml [236](R 236.66)] osgi.wiring.package; (osgi.wiring.package=ru.home.project)]

En ruta trato de usar mi procesador personalizado de esta manera

<camelContext xmlns="http://camel.apache.org/schema/spring">
...
<route ...>
    <bean ref="myProcessor" method="process"/>
    <!-- or <process ref="myProcessor"/> -->
...
</route>
...
</camelContext>

Por favor, guíame por el camino correcto. TIA.

UPD: envuelvo mi procesador personalizado en el paquete osgi con maven-bundle-plugin. En la configuración de manifiesto he escrito Export-Package con paquete, que contiene mi clase. Después de implementar jar, puedo ver mi paquete en la lista de importación de paquetes xml (comandoheaders <bundleId>).

Pero aún, cuando el paquete xml intenta iniciarse, falla con la excepción

karaf@root>Exception in thread "SpringOsgiExtenderThread-46" org.apache.camel.RuntimeCamelException: org.apache.camel.FailedToCreateRouteException: Failed to create route get-client-offers-rest at: >>> process[ref:queryParamProcessor] <<< in route: Route(get-client-offers-rest)[[From[restlet:http://localhost... because of No bean could be found in the registry for: queryParamProcessor of type: org.apache.camel.Processor
at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1652)
at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:138)
at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:340)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:96)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:334)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:954)
at org.springframework.osgi.context.support.AbstractOsgiBundleApplicationContext.finishRefresh(AbstractOsgiBundleApplicationContext.java:235)
at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:358)
at org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)
at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:132)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route get-client-offers-rest at: >>> process[ref:queryParamProcessor] <<< in route: Route(get-client-offers-rest)[[From[restlet:http://localhost... because of No bean could be found in the registry for: queryParamProcessor of type: org.apache.camel.Processor
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1072)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196)
at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:944)
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3260)
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:2983)
at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175)
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2814)
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2810)
at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2833)
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2810)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2779)
at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:270)
at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:136)
... 10 more
Caused by: org.apache.camel.NoSuchBeanException: No bean could be found in the registry for: queryParamProcessor of type: org.apache.camel.Processor
at org.apache.camel.util.CamelContextHelper.mandatoryLookup(CamelContextHelper.java:159)
at org.apache.camel.impl.DefaultRouteContext.mandatoryLookup(DefaultRouteContext.java:151)
at org.apache.camel.model.ProcessDefinition.createProcessor(ProcessDefinition.java:95)
at org.apache.camel.model.ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:535)
at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:496)
at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:220)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1069)
... 23 more

Cuando intenté usar el procesador como un bean con<to uri="bean:queryParamProcessor" method="process"/> en ruta, falla con NPE dentro del método del procesador, porque el argumento del método de alguna manera no está vinculado, aún así encamel docs se dice: también puede usar Exchange como el parámetro en sí, pero luego el tipo de retorno debe ser nulo.

Respuestas a la pregunta(0)

Su respuesta a la pregunta