camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Furtak <mfur...@cra.com>
Subject RE: Camel under OSGi without Spring et al.
Date Tue, 28 Jun 2011 13:37:09 GMT
I looked into continuing my testing with camel-mail, but stopped short because it also has a dependency on Spring (JavaMailSender).

However, I did test with camel-xmpp to great success. Besides bringing in the correct libraries, the only code change was to ensure that my starter also bound a ComponentResolver (component=xmpp) before activating.


One other Spring dependency worth noting is that JMX management seems to depend on it. From my log:

[27 Jun 2011 12:20:12]  INFO  [Component Resolve Thread] OsgiDefaultCamelContext - JMX enabled. Using ManagedManagementStrategy.
[27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] ServiceHelper - Starting service: org.apache.camel.management.ManagedManagementStrategy@1865b28
[27 Jun 2011 12:20:12]  WARN  [Component Resolve Thread] OsgiDefaultCamelContext - Cannot find needed classes for JMX lifecycle strategy. Needed class is in spring-context.jar using Spring 2.5 or newer (spring-jmx.jar using Spring 2.0.x). NoClassDefFoundError: org/springframework/jmx/export/metadata/JmxAttributeSource
[27 Jun 2011 12:20:12]  WARN  [Component Resolve Thread] OsgiDefaultCamelContext - Cannot use JMX. Fallback to using DefaultManagementStrategy (non JMX).


Thanks to everyone who helped me work this out. I'm feeling a bit more confident that I can use Camel in my project now.

Best,
-Mike Furtak







THIS MESSAGE IS INTENDED FOR THE USE OF THE PERSON TO WHOM IT IS ADDRESSED. IT MAY CONTAIN INFORMATION THAT IS PRIVILEGED, CONFIDENTIAL AND EXEMPT FROM DISCLOSURE UNDER APPLICABLE LAW. If you are not the intended recipient, your use of this message for any purpose is strictly prohibited. If you have received this communication in error, please delete the message and notify the sender so that we may correct our records.

-----Original Message-----



From: Donald Whytock [mailto:dwhytock@gmail.com]
Sent: Monday, June 27, 2011 4:42 PM
To: users@camel.apache.org
Subject: Re: Camel under OSGi without Spring et al.

Seems reasonable, since presumably OsgiPackageScanClassResolver is
more made to be used in an OSGI environment than the
DefaultPackageScanClassResolver.  This might also solve a problem I
was having, where OsgiDefaultCamelContext.getComponentNames() was
coming up empty.

Can you test with a non-core component as well, such as mail?

On Mon, Jun 27, 2011 at 4:21 PM, Michael Furtak <mfurtak@cra.com> wrote:
> Ok. I seem to have found a resolution. Now the question is whether or not it is appropriate. :)
>
> Since we seemed to agree that classes are not being found by their annotations, I tried to backtrace how that was being resolved. Where I wound up was in org.apache.camel.core.osgi.OsgiTypeConverter.createRegistry(OsgiTypeConverter.java:166)
>
> There, it seems to be setting up the DefaultTypeConverter which will be used as the delegate. It sets it up to use a DefaultPackageScanClassResolver, which seems to be failing to find anything. If I change:
>
> protected DefaultTypeConverter createRegistry() {
>  // base the osgi type converter on the default type converter
>  DefaultTypeConverter answer = new DefaultTypeConverter(new DefaultPackageScanClassResolver() {
>    @Override
>    public Set<ClassLoader> getClassLoaders() {
>      // we don't need any classloaders as we use osgi service tracker instead
>      return Collections.emptySet();
>    }
>  }, injector, factoryFinder);
> // ...
>
> to:
>
> protected DefaultTypeConverter createRegistry() {
>  // base the osgi type converter on the default type converter
>  PackageScanClassResolver resolver = new OsgiPackageScanClassResolver(bundleContext);
>  DefaultTypeConverter answer = new DefaultTypeConverter(resolver, injector, factoryFinder);
>
>
> then I get a successful startup and a working test case:
>
> from("file:data/inbox").to("file:data/outbox");
>
>
> Hurrah! So, is this a reasonable fix? Does the code I replaced in OsgiTypeConverter make sense as written?
>
> Thanks to all who've helped so far.
>
> -Mike
>
>
>
>
>
>
>
> THIS MESSAGE IS INTENDED FOR THE USE OF THE PERSON TO WHOM IT IS ADDRESSED. IT MAY CONTAIN INFORMATION THAT IS PRIVILEGED, CONFIDENTIAL AND EXEMPT FROM DISCLOSURE UNDER APPLICABLE LAW. If you are not the intended recipient, your use of this message for any purpose is strictly prohibited. If you have received this communication in error, please delete the message and notify the sender so that we may correct our records.
>
> -----Original Message-----
>
>
>
> From: Donald Whytock [mailto:dwhytock@gmail.com]
> Sent: Monday, June 27, 2011 1:56 PM
> To: users@camel.apache.org
> Subject: Re: Camel under OSGi without Spring et al.
>
> No specific thoughts, no.  It's fairly clear you're waiting for
> TypeConverterLoader to be registered before you're trying to start the
> CamelContext, and (if this is all the code you have loaded) you're not
> trying to access a file component.  Honestly, I think it should work,
> but again I'm not familiar with Declarative Services.
>
> My startup log file has some lines yours doesn't...
>
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Found 13 @Converter classes to load
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class:
> org.apache.camel.component.file.GenericFileConverter
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class: org.apache.camel.component.bean.BeanConverter
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class: org.apache.camel.converter.CamelConverter
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class:
> org.apache.camel.converter.CollectionConverter
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class: org.apache.camel.converter.IOConverter
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class: org.apache.camel.converter.NIOConverter
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class: org.apache.camel.converter.ObjectConverter
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class:
> org.apache.camel.converter.TimePatternConverter
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class: org.apache.camel.converter.jaxp.DomConverter
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class: org.apache.camel.converter.jaxp.StaxConverter
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class:
> org.apache.camel.converter.jaxp.StreamSourceConverter
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class: org.apache.camel.converter.jaxp.XmlConverter
> org.apache.camel.camel-core[org.apache.camel.impl.osgi.Activator] :
> Loading converter class:
> org.apache.camel.converter.stream.StreamCacheConverter
>
> which might correspond to the "Searching for annotations" line in your
> log.  Random thought...are annotations enabled in your JVM?
>
> I'm sending the rest of the pieces of my bundle (under separate cover,
> as the list apparently eats attachments; available to others on
> request).  If that doesn't work for you either, my guess is something
> in your Camel config.
>
> Don
>
> On Mon, Jun 27, 2011 at 12:26 PM, Michael Furtak <mfurtak@cra.com> wrote:
>> Hi Don,
>>
>> Thanks for your continued help. I've had my efforts diverted elsewhere for a bit, but I'm back to trying to explore this again today.
>>
>> Following this message: http://camel.465427.n5.nabble.com/Camel-under-OSGi-without-Spring-et-al-tp4507473p4511826.html
>>
>> I've modified my test environment slightly. I've added the TypeConverterLoader to the list of services that my CamelStarter requires before it activates. That means that it now binds a ComponentResolver with (component=file) and a TypeConverterLoader before the activate method is invoked. That is also visible in the log. However, the call to camelContext.start() still produces an exception.
>>
>>
>>
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="com.cra.camelsandbox.CamelStarter">
>>   <implementation class="com.cra.camelsandbox.CamelStarter"/>
>>   <reference bind="bindComponentResolver" cardinality="1..1" interface="org.apache.camel.spi.ComponentResolver" name="ComponentResolver" policy="dynamic" target="(component=file)" unbind="unbindComponentResolver"/>
>>   <reference bind="bindTypeConverterLoader" cardinality="1..1" interface="org.apache.camel.spi.TypeConverterLoader" name="TypeConverterLoader" policy="dynamic" unbind="unbindTypeConverterLoader"/>
>> </scr:component>
>>
>>
>>
>>
>> public class CamelStarter
>> {
>>  private static final transient Logger LOG = LoggerFactory.getLogger(CamelStarter.class);
>>
>>  protected void activate(ComponentContext context)
>>  {
>>    try
>>    {
>>      LOG.trace("activating");
>>      CamelContext camelContext = new OsgiDefaultCamelContext(context.getBundleContext());
>>      camelContext.start();
>>    }
>>    catch (Throwable t)
>>    {
>>      t.printStackTrace();
>>    }
>>  }
>>
>>  protected void deactivate(ComponentContext context)
>>  {
>>    LOG.trace("deactivating");
>>  }
>>
>>  protected void bindComponentResolver(ComponentResolver cr)
>>  {
>>    LOG.trace("Binding ComponentResolver");
>>    // Ignored, since the ComponentResolver is not directly used
>>  }
>>
>>  protected void unbindComponentResolver(ComponentResolver cr)
>>  {
>>    LOG.trace("Unbinding ComponentResolver");
>>    // Ignored, since the ComponentResolver is not directly used
>>  }
>>
>>  protected void bindTypeConverterLoader(TypeConverterLoader tcl)
>>  {
>>    LOG.trace("Binding TypeConverterLoader");
>>    // Ignored, since the ComponentResolver is not directly used
>>  }
>>
>>  protected void unbindTypeConverterLoader(TypeConverterLoader tcl)
>>  {
>>    LOG.trace("Unbinding TypeConverterLoader");
>>    // Ignored, since the ComponentResolver is not directly used
>>  }
>> }
>>
>>
>>
>> I've also tweaked my logging settings to capture Camel's output, in the hope that it provides some more context:
>>
>>
>>
>> <START CONSOLE>
>>
>> [27 Jun 2011 12:20:11]  INFO  [Start Level Event Dispatcher] Activator - Camel activator starting
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: scala-library
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: org.eclipse.osgi.services
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: org.eclipse.equinox.event
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: org.eclipse.equinox.util
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: org.eclipse.equinox.ds
>> [27 Jun 2011 12:20:11]  INFO  [Start Level Event Dispatcher] Activator - Camel activator started
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/bean in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/browse in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/class in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/dataset in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/direct in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/file in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/language in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/log in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/mock in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/properties in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/ref in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/seda in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/timer in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/component/vm in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/language/bean in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/language/constant in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/language/file in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/language/header in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/language/property in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/language/simple in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/language/tokenize in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Found entry: META-INF/services/org/apache/camel/language/xpath in bundle org.apache.camel.camel-core
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: org.eclipse.osgi.util
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: com.cra.camel.core.osgi
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: se.scalablesolutions.akka.actor
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: commons-management
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: org.eclipse.equinox.log
>> [27 Jun 2011 12:20:11]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: org.apache.log4j
>> [27 Jun 2011 12:20:11]  TRACE [Component Resolve Thread] CamelStarter - Binding ComponentResolver
>> [27 Jun 2011 12:20:11]  TRACE [Component Resolve Thread] CamelStarter - Binding TypeConverterLoader
>> [27 Jun 2011 12:20:11]  TRACE [Component Resolve Thread] CamelStarter - activating
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] DefaultPackageScanClassResolver - Adding ContextClassLoader from current thread: org.eclipse.core.runtime.internal.adaptor.ContextFinder@193722c
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] OsgiCamelContextHelper - Using OsgiCamelContextNameStrategy
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] OsgiCamelContextHelper - Using OsgiClassResolver
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] OsgiCamelContextHelper - Using OsgiFactoryFinderResolver
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] OsgiCamelContextHelper - Using OsgiPackageScanClassResolver
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] OsgiPackageScanClassResolver - Adding ContextClassLoader from current thread: org.eclipse.core.runtime.internal.adaptor.ContextFinder@193722c
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] OsgiCamelContextHelper - Using OsgiComponentResolver
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] OsgiCamelContextHelper - Using OsgiLanguageResolver
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] OsgiCamelContextHelper - Using OsgiDataFormatResolver
>> [27 Jun 2011 12:20:12]  INFO  [Component Resolve Thread] OsgiDefaultCamelContext - Apache Camel  (CamelContext: 13-camel-2) is starting
>> [27 Jun 2011 12:20:12]  INFO  [Component Resolve Thread] OsgiDefaultCamelContext - JMX enabled. Using ManagedManagementStrategy.
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] ServiceHelper - Starting service: org.apache.camel.management.ManagedManagementStrategy@1865b28
>> [27 Jun 2011 12:20:12]  WARN  [Component Resolve Thread] OsgiDefaultCamelContext - Cannot find needed classes for JMX lifecycle strategy. Needed class is in spring-context.jar using Spring 2.5 or newer (spring-jmx.jar using Spring 2.0.x). NoClassDefFoundError: org/springframework/jmx/export/metadata/JmxAttributeSource
>> [27 Jun 2011 12:20:12]  WARN  [Component Resolve Thread] OsgiDefaultCamelContext - Cannot use JMX. Fallback to using DefaultManagementStrategy (non JMX).
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] ServiceHelper - Starting service: org.apache.camel.core.osgi.OsgiTypeConverter@1d62270
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] OsgiTypeConverter - AddingService: {org.apache.camel.spi.TypeConverterLoader}={service.id=36}
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] OsgiTypeConverter$1 - Adding ContextClassLoader from current thread: org.eclipse.core.runtime.internal.adaptor.ContextFinder@193722c
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] DefaultTypeConverter - Adding fallback type converter: org.apache.camel.impl.converter.ToStringTypeConverter@d73c7a which can promote: false
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] DefaultTypeConverter - Adding fallback type converter: org.apache.camel.impl.converter.PropertyEditorTypeConverter@1e845c2 which can promote: false
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] DefaultTypeConverter - Adding fallback type converter: org.apache.camel.impl.converter.EnumTypeConverter@125fefa which can promote: true
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] DefaultTypeConverter - Adding fallback type converter: org.apache.camel.impl.converter.ArrayTypeConverter@19e8f17 which can promote: true
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] DefaultTypeConverter - Adding fallback type converter: org.apache.camel.impl.converter.FutureTypeConverter@13ad33d which can promote: false
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] DefaultTypeConverter - Adding fallback type converter: org.apache.camel.impl.converter.AsyncProcessorTypeConverter@7109c4 which can promote: true
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] ServiceHelper - Starting service: org.apache.camel.impl.converter.DefaultTypeConverter@1aed5f9
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] ServiceHelper - Starting service: org.apache.camel.impl.converter.PropertyEditorTypeConverter@1e845c2
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] DefaultTypeConverter - Loading type converters ...
>> [27 Jun 2011 12:20:12]  INFO  [Component Resolve Thread] AnnotationTypeConverterLoader - Loading file META-INF/services/org/apache/camel/TypeConverter to retrieve list of packages, from url: bundleresource://5.fwk5184781/META-INF/services/org/apache/camel/TypeConverter
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] OsgiTypeConverter$1 - Searching for annotations of org.apache.camel.Converter in packages: [org.apache.camel.component.file, org.apache.camel.component.bean, org.apache.camel.converter]
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] OsgiTypeConverter$1 - Found: []
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] ServiceHelper - Stopping service org.apache.camel.impl.converter.PropertyEditorTypeConverter@1e845c2
>> [27 Jun 2011 12:20:12]  INFO  [Component Resolve Thread] OsgiDefaultCamelContext - Apache Camel  (CamelContext:13-camel-2) is shutting down
>> [27 Jun 2011 12:20:12]  INFO  [Component Resolve Thread] DefaultShutdownStrategy - Starting to graceful shutdown 0 routes (timeout 300 seconds)
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] DefaultExecutorServiceStrategy - Created new single thread pool for source: org.apache.camel.impl.DefaultShutdownStrategy@4ecfdd with name: ShutdownTask. -> java.util.concurrent.Executors$FinalizableDelegatedExecutorService@30d82d
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] ExecutorServiceHelper - Created thread[ShutdownTask]: Thread[Camel Thread 0 - ShutdownTask,5,main]
>> [27 Jun 2011 12:20:12]  DEBUG [Camel Thread 0 - ShutdownTask] DefaultShutdownStrategy - There are 0 routes to shutdown
>> [27 Jun 2011 12:20:12]  INFO  [Component Resolve Thread] DefaultShutdownStrategy - Graceful shutdown of 0 routes completed in 0 seconds
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] ServiceHelper - Service already stopped: org.apache.camel.core.osgi.OsgiTypeConverter@1d62270
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] ServiceHelper - Shutting down service org.apache.camel.core.osgi.OsgiTypeConverter@1d62270
>> [27 Jun 2011 12:20:12]  TRACE [Component Resolve Thread] ServiceHelper - Stopping service org.apache.camel.management.DefaultManagementStrategy@164dbd5
>> [27 Jun 2011 12:20:12]  INFO  [Component Resolve Thread] OsgiDefaultCamelContext - Uptime: 0.063 seconds
>> [27 Jun 2011 12:20:12]  INFO  [Component Resolve Thread] OsgiDefaultCamelContext - Apache Camel  (CamelContext: 13-camel-2) is shutdown in 0.016 seconds
>> org.apache.camel.RuntimeCamelException: Error staring OSGiTypeConverter due: Failed to load type converters because of: Cannot find any type converter classes from the following packages: [org.apache.camel.component.file, org.apache.camel.component.bean, org.apache.camel.converter]
>>        at org.apache.camel.core.osgi.OsgiTypeConverter.createRegistry(OsgiTypeConverter.java:206)
>>        at org.apache.camel.core.osgi.OsgiTypeConverter.getDelegate(OsgiTypeConverter.java:164)
>>        at org.apache.camel.core.osgi.OsgiTypeConverter.addingService(OsgiTypeConverter.java:69)
>>        at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)
>>        at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
>>        at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184)
>>        at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:339)
>>        at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:273)
>>        at org.apache.camel.core.osgi.OsgiTypeConverter.doStart(OsgiTypeConverter.java:102)
>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:67)
>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:54)
>>        at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60)
>>        at org.apache.camel.impl.DefaultCamelContext.startServices(DefaultCamelContext.java:1613)
>>        at org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:899)
>>        at org.apache.camel.impl.DefaultCamelContext.getTypeConverter(DefaultCamelContext.java:984)
>>        at org.apache.camel.impl.DefaultCamelContext.getTypeConverterRegistry(DefaultCamelContext.java:1001)
>>        at org.apache.camel.impl.DefaultCamelContext.forceLazyInitialization(DefaultCamelContext.java:1940)
>>        at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1423)
>>        at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1336)
>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:67)
>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:54)
>>        at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1314)
>>        at com.cra.camelsandbox.CamelStarter.activate(CamelStarter.java:21)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:210)
>>        at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:139)
>>        at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:339)
>>        at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
>>        at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:196)
>>        at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
>>        at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
>>        at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
>>        at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
>>        at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
>>        at java.lang.Thread.run(Thread.java:619)
>> Caused by: org.apache.camel.TypeConverterLoaderException: Failed to load type converters because of: Cannot find any type converter classes from the following packages: [org.apache.camel.component.file, org.apache.camel.component.bean, org.apache.camel.converter]
>>        at org.apache.camel.impl.converter.AnnotationTypeConverterLoader.load(AnnotationTypeConverterLoader.java:79)
>>        at org.apache.camel.impl.converter.BaseTypeConverterRegistry.loadTypeConverters(BaseTypeConverterRegistry.java:395)
>>        at org.apache.camel.impl.converter.DefaultTypeConverter.doStart(DefaultTypeConverter.java:41)
>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:67)
>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:54)
>>        at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60)
>>        at org.apache.camel.core.osgi.OsgiTypeConverter.createRegistry(OsgiTypeConverter.java:202)
>>        ... 37 more
>> [27 Jun 2011 12:20:12]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: com.cra.camelsandbox.core
>> [27 Jun 2011 12:20:12]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: slf4j.api
>> [27 Jun 2011 12:20:12]  DEBUG [Start Level Event Dispatcher] Activator - Bundle started: org.eclipse.osgi
>>
>> <END CONSOLE>
>>
>>
>>
>> The lines:
>>
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] OsgiTypeConverter$1 - Searching for annotations of org.apache.camel.Converter in packages: [org.apache.camel.component.file, org.apache.camel.component.bean, org.apache.camel.converter]
>> [27 Jun 2011 12:20:12]  DEBUG [Component Resolve Thread] OsgiTypeConverter$1 - Found: []
>>
>> ...seem indicative of the problem to my untrained eye. Do you have any further thoughts about what I am doing wrong?
>>
>>
>>
>> Thanks again,
>> -Mike
>>
>>
>>
>>
>>
>>
>>
>>
>> THIS MESSAGE IS INTENDED FOR THE USE OF THE PERSON TO WHOM IT IS ADDRESSED. IT MAY CONTAIN INFORMATION THAT IS PRIVILEGED, CONFIDENTIAL AND EXEMPT FROM DISCLOSURE UNDER APPLICABLE LAW. If you are not the intended recipient, your use of this message for any purpose is strictly prohibited. If you have received this communication in error, please delete the message and notify the sender so that we may correct our records.
>>
>> -----Original Message-----
>>
>>
>>
>> From: Donald Whytock [mailto:dwhytock@gmail.com]
>> Sent: Tuesday, June 21, 2011 4:10 PM
>> To: users@camel.apache.org
>> Subject: Re: Camel under OSGi without Spring et al.
>>
>> Not familiar with OSGi Declarative Services, so there will be some
>> guesswork on my part...
>>
>> Yes, I use OsgiCamelTracker to control the Camel-using bundles.  But
>> it also tracks whether the CamelContext-singleton-providing service
>> (ContextUtil) is up.  That service in turn depends on an instance of
>> org.apache.camel.spi.TypeConverterLoader service.
>>
>> camel-core has a BundleActivator.  That activator starts a
>> BundleTracker that checks every bundle that launches (including
>> itself) to see if it contains components that need to be loaded.  It
>> registers the components as services first, then it registers
>> TypeConverterLoader.
>>
>> From the example you gave, it looks like you need to create another
>> class that binds to TypeConverterLoader, generates and starts a
>> CamelContext, and then registers itself as a service; then your
>> CamelStarter class would bind to that service along with the
>> ComponentResolver(s), and fetch the CamelContext from that service.
>>
>> Can you bind to multiple services via your XML, such that your class
>> won't activate until all the other services are found?
>>
>> Don
>>
>> On Tue, Jun 21, 2011 at 3:21 PM, Michael Furtak <mfurtak@cra.com> wrote:
>>> Hi Don,
>>>
>>> I reviewed your sample code. Thanks very much for sharing that with me. If I understand the intent and explanation correctly, you are using your OsgiCamelTracker to delay the start-up of your Camel-using code until you can be sure that the requisite ComponentResolver services have become available.
>>>
>>> In my current project we use OSGi Declarative Services, so I have set up an OSGi component (yay, overloaded terms!) that requests a service reference for a ComponentResolver that can provide the Camel 'file' component. This should have the same effect of delaying the activation of my CamelStarter class until that service can be bound. Here's the DS xml:
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="com.cra.camelsandbox.CamelStarter">
>>>   <implementation class="com.cra.camelsandbox.CamelStarter"/>
>>>   <reference bind="bindComponentResolver" cardinality="1..1" interface="org.apache.camel.spi.ComponentResolver" name="ComponentResolver" policy="dynamic" target="(component=file)" unbind="unbindComponentResolver"/>
>>> </scr:component>
>>>
>>>
>>> And the Java class itself:
>>>
>>> public class CamelStarter
>>> {
>>>  private static final transient Logger LOG = LoggerFactory.getLogger(CamelStarter.class);
>>>
>>>  protected void activate(ComponentContext context) throws Exception
>>>  {
>>>    LOG.trace("activating");
>>>    CamelContext camelContext = new OsgiDefaultCamelContext(context.getBundleContext());
>>>    // camelContext.start();
>>>  }
>>>
>>>  protected void deactivate(ComponentContext context)
>>>  {
>>>    LOG.trace("deactivating");
>>>  }
>>>
>>>  protected void bindComponentResolver(ComponentResolver cr)
>>>  {
>>>    LOG.trace("Binding ComponentResolver");
>>>    // Ignored, since the ComponentResolver is not directly used
>>>  }
>>>
>>>  protected void unbindComponentResolver(ComponentResolver cr)
>>>  {
>>>    LOG.trace("Unbinding ComponentResolver");
>>>    // Ignored, since the ComponentResolver is not directly used
>>>  }
>>> }
>>>
>>> With the third line of the activate method commented out, everything seems to go as planned:
>>>
>>> [21 Jun 2011 15:08:19]  TRACE [Component Resolve Thread (Bundle 12)] CamelStarter - Binding ComponentResolver
>>> [21 Jun 2011 15:08:19]  TRACE [Component Resolve Thread (Bundle 12)] CamelStarter - activating
>>>
>>>
>>> But if I uncomment it, I get this:
>>>
>>> java.lang.reflect.InvocationTargetException
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>>        at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:210)
>>>        at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:139)
>>>        at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:339)
>>>        at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
>>>        at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:196)
>>>        at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
>>>        at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
>>>        at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
>>>        at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
>>>        at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
>>>        at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
>>> Caused by: org.apache.camel.RuntimeCamelException: Error staring OSGiTypeConverter due: Failed to load type converters because of: Cannot find any type converter classes from the following packages: [org.apache.camel.component.file, org.apache.camel.component.bean, org.apache.camel.converter]
>>>        at org.apache.camel.core.osgi.OsgiTypeConverter.createRegistry(OsgiTypeConverter.java:206)
>>>        at org.apache.camel.core.osgi.OsgiTypeConverter.getDelegate(OsgiTypeConverter.java:164)
>>>        at org.apache.camel.core.osgi.OsgiTypeConverter.addingService(OsgiTypeConverter.java:69)
>>>        at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)
>>>        at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
>>>        at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184)
>>>        at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:339)
>>>        at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:273)
>>>        at org.apache.camel.core.osgi.OsgiTypeConverter.doStart(OsgiTypeConverter.java:102)
>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:67)
>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:54)
>>>        at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60)
>>>        at org.apache.camel.impl.DefaultCamelContext.startServices(DefaultCamelContext.java:1613)
>>>        at org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:899)
>>>        at org.apache.camel.impl.DefaultCamelContext.getTypeConverter(DefaultCamelContext.java:984)
>>>        at org.apache.camel.impl.DefaultCamelContext.getTypeConverterRegistry(DefaultCamelContext.java:1001)
>>>        at org.apache.camel.impl.DefaultCamelContext.forceLazyInitialization(DefaultCamelContext.java:1940)
>>>        at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1423)
>>>        at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1336)
>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:67)
>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:54)
>>>        at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1314)
>>>        at com.cra.camelsandbox.CamelStarter.activate(CamelStarter.java:18)
>>>        ... 15 more
>>> Caused by: org.apache.camel.TypeConverterLoaderException: Failed to load type converters because of: Cannot find any type converter classes from the following packages: [org.apache.camel.component.file, org.apache.camel.component.bean, org.apache.camel.converter]
>>>        at org.apache.camel.impl.converter.AnnotationTypeConverterLoader.load(AnnotationTypeConverterLoader.java:79)
>>>        at org.apache.camel.impl.converter.BaseTypeConverterRegistry.loadTypeConverters(BaseTypeConverterRegistry.java:395)
>>>        at org.apache.camel.impl.converter.DefaultTypeConverter.doStart(DefaultTypeConverter.java:41)
>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:67)
>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:54)
>>>        at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60)
>>>        at org.apache.camel.core.osgi.OsgiTypeConverter.createRegistry(OsgiTypeConverter.java:202)
>>>        ... 37 more
>>> Root exception:
>>> org.apache.camel.RuntimeCamelException: Error staring OSGiTypeConverter due: Failed to load type converters because of: Cannot find any type converter classes from the following packages: [org.apache.camel.component.file, org.apache.camel.component.bean, org.apache.camel.converter]
>>>        at org.apache.camel.core.osgi.OsgiTypeConverter.createRegistry(OsgiTypeConverter.java:206)
>>>        at org.apache.camel.core.osgi.OsgiTypeConverter.getDelegate(OsgiTypeConverter.java:164)
>>>        at org.apache.camel.core.osgi.OsgiTypeConverter.addingService(OsgiTypeConverter.java:69)
>>>        at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)
>>>        at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
>>>        at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184)
>>>        at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:339)
>>>        at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:273)
>>>        at org.apache.camel.core.osgi.OsgiTypeConverter.doStart(OsgiTypeConverter.java:102)
>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:67)
>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:54)
>>>        at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60)
>>>        at org.apache.camel.impl.DefaultCamelContext.startServices(DefaultCamelContext.java:1613)
>>>        at org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:899)
>>>        at org.apache.camel.impl.DefaultCamelContext.getTypeConverter(DefaultCamelContext.java:984)
>>>        at org.apache.camel.impl.DefaultCamelContext.getTypeConverterRegistry(DefaultCamelContext.java:1001)
>>>        at org.apache.camel.impl.DefaultCamelContext.forceLazyInitialization(DefaultCamelContext.java:1940)
>>>        at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1423)
>>>        at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1336)
>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:67)
>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:54)
>>>        at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1314)
>>>        at com.cra.camelsandbox.CamelStarter.activate(CamelStarter.java:18)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>>        at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:210)
>>>        at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:139)
>>>        at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:339)
>>>        at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588)
>>>        at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:196)
>>>        at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441)
>>>        at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213)
>>>        at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800)
>>>        at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767)
>>>        at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
>>>        at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
>>> Caused by: org.apache.camel.TypeConverterLoaderException: Failed to load type converters because of: Cannot find any type converter classes from the following packages: [org.apache.camel.component.file, org.apache.camel.component.bean, org.apache.camel.converter]
>>>        at org.apache.camel.impl.converter.AnnotationTypeConverterLoader.load(AnnotationTypeConverterLoader.java:79)
>>>        at org.apache.camel.impl.converter.BaseTypeConverterRegistry.loadTypeConverters(BaseTypeConverterRegistry.java:395)
>>>        at org.apache.camel.impl.converter.DefaultTypeConverter.doStart(DefaultTypeConverter.java:41)
>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:67)
>>>        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:54)
>>>        at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60)
>>>        at org.apache.camel.core.osgi.OsgiTypeConverter.createRegistry(OsgiTypeConverter.java:202)
>>>        ... 37 more
>>>
>>> Slightly off topic, your advice about needing to share the CamelContext object as a singleton (wrt. SEDA, etc.) was received loud and clear. What you see here is me just trying to keep my test cases simple for now.
>>>
>>>
>>> So that's where I am stuck at the moment. I'm sorry not to be working more directly from your sample code, but please correct me if its service management strategy/intent is different from my understanding. Does my current problem make sense? What am I missing?
>>>
>>>
>>> Thanks,
>>> -Mike
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> THIS MESSAGE IS INTENDED FOR THE USE OF THE PERSON TO WHOM IT IS ADDRESSED. IT MAY CONTAIN INFORMATION THAT IS PRIVILEGED, CONFIDENTIAL AND EXEMPT FROM DISCLOSURE UNDER APPLICABLE LAW. If you are not the intended recipient, your use of this message for any purpose is strictly prohibited. If you have received this communication in error, please delete the message and notify the sender so that we may correct our records.
>>>
>>> -----Original Message-----
>>>
>>>
>>>
>>> From: Donald Whytock [mailto:dwhytock@gmail.com]
>>> Sent: Monday, June 20, 2011 4:45 PM
>>> To: users@camel.apache.org
>>> Subject: Re: Camel under OSGi without Spring et al.
>>>
>>> OsgiCamelTracker.java (attached) is a work in progress.  There's a
>>> reference to ContextUtil; that's the service class that supplies the
>>> CamelContext singleton.
>>>
>>> Use it by subclassing it and implementing methods start() and stop().
>>> Call setBundleContext(bundleContext) first, then startTracking().
>>>
>>> OsgiCamelTracker.startTracking() accepts no parameters, a single
>>> String, or a Collection<String>.  The strings are the names of
>>> components that you need.  It'll track instances of ComponentResolver,
>>> maintaining a list of what components are available and what
>>> components are still needed.  When all the components you need are
>>> available, it'll call start(); when any of the components cease to be
>>> available, it'll call stop().
>>>
>>> If you don't supply component names, it'll react to camel-core itself
>>> becoming active, which is all you need for core components like mock,
>>> bean and file.
>>>
>>> Use routeId(<name>) in your route definitions.  Use
>>> camelcontext.startRoute(<name>) from the OsgiCamelTracker.start(); use
>>> camelcontext.stopRoute(<name>) from the OsgiCamelTracker.stop().
>>>
>>> Be advised, you'll need to use a singleton CamelContext if you're
>>> using SEDA queues, because SEDA queues are local to a CamelContext
>>> instance.  A route that consumes from a SEDA queue from one
>>> CamelContext instance won't see anything produced to a SEDA queue from
>>> a different CamelContext instance.
>>>
>>> For OsgiDefaultCamelContext...
>>>
>>>> On Mon, Jun 20, 2011 at 3:31 PM, Michael Furtak <mfurtak@cra.com> wrote:
>>>>> I did come across mention of this in my troubleshooting exploration. It seems to be part of a bundle called camel-core-osgi, is that right? I don't think I have it in my 2.7.2 distribution. Is it something I need to bundle myself? I also saw mention of it being private to the Spring bundle, which is what prompted my discussion about not wanting to bring in Spring.
>>>
>>> org.apache.camel.core.osgi is in camel-blueprint.jar.  I split it out
>>> into its own .jar so as to not worry about the Blueprint dependencies.
>>>  You'll need to modify the manifest, or make your own.
>>>
>>> Don
>>>
>>>
>>
>>
>
>


Mime
View raw message