Hello Claus - thanks for your reply.

I've tested the latest from trunk and I still get the NPE. However, I'm not
exactly sure what you have fixed.

My problem (which was self inflicted since it was a bug in another part of
the system) was that I accidentally set the name of the camel context to
null. That's why the NPE was thrown. An NPE is OK by me but the problem was
that it was caught and not rethrown. The result was that my application
thought that the context was started while, in fact, it was not.

Was your fix an attempt to not throw an NPE when the name of the context is
null or was the fix to make sure that it was rethrown?

Judging from you previous post, it seems like not rethrowing is as designed.
My problem then is how do I make sure that the starting of the context
worked? Currently my code goes like this:

try {
  mCamelContext.start();
} catch (Exception e) {
 <Handle error>
}

What then is best practice to make sure that the context was started? Is it
as easy as:

boolean isStarted = false;
try {
  mCamelContext.start();
  isStarted = mCamelContext.getStatus().isStarted();
} catch (Exception e) {
  <Log error>
}
if(!isStarted) {
  <Handle error>
}

I have just assumed that if the start() method is executed without
exceptions then the context is started. This seems like a faulty assumption.

/Bengt


2010/11/18 Claus Ibsen <[email protected]>

> Hi
>
> I commit a fix for the NPE in camel-core, trunk: 1036382.
>
> It would be nice if you could test that with your issue.
>
>
> On Thu, Nov 18, 2010 at 10:04 AM, Claus Ibsen <[email protected]>
> wrote:
> > On Thu, Nov 18, 2010 at 8:43 AM, Bengt Rodehav <[email protected]>
> wrote:
> >> Anyone have an opinion about this? Shall I create a JIRA ticket?
> >>
> >
> > This is on purpose as the host container may deny starting/using the
> > lifecycle strategy.
> > For example deny using JMX etc. And Camel will just fallback and
> > continue to book up without that strategy.
> >
> > The NPE you are facing is obviously related to the complexity of the
> > OSGi platform. So yeah open a ticket and lets see if we can nail this
> > problem.
> >
> >
> >
> >
> >
> >> /Benke
> >>
> >> 2010/11/17 Bengt Rodehav <[email protected]>
> >>
> >>> I've encountered some problems regarding starting Camel. I use Camel
> 2.5.0.
> >>> I also use iPOJO in Karaf to create OSGi services. When my iPOJO
> instance
> >>> becomes valid, my callback method is started and I try to create a
> Camel
> >>> context and start it.
> >>>
> >>> However, even if I fail to start Camel, no exception is thrown which
> causes
> >>> me problems later on. When looking through the code it seems like an
> >>> exception is caught but not rethrown in
> DefaultCamelContext.doStartCamel()
> >>> on line 1270. Is this "as designed" or a bug? I would really like an
> >>> exception to be thrown at this point to allow me to know whether I
> succeeded
> >>> in starting the context or not.
> >>>
> >>> In my particular case, I have erroneously set the name of the camel
> context
> >>> to null.
> >>>
> >>> The exception I get is the following:
> >>>
> >>> 2010-11-17 11:32:34,456 | WARN  | guration Updater |
> DefaultCamelContext
> >>>            | e.camel.impl.DefaultCamelContext 1278 | Cannot start
> lifecycle
> >>> strategy:
> >>>
> org.apache.camel.management.defaultmanagementlifecyclestrat...@1060ee9.thisstrategy
>  will be removed. Cause: java.lang.NullPointerException
> >>> org.apache.camel.RuntimeCamelException: java.lang.NullPointerException
> >>> at
> >>>
> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1140)
> >>>  at
> >>>
> org.apache.camel.management.DefaultManagementLifecycleStrategy.onContextStart(DefaultManagementLifecycleStrategy.java:161)
> >>> at
> >>>
> org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1270)
> >>>  at
> >>>
> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1213)
> >>> at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:65)
> >>>  at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:52)
> >>> at
> >>>
> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1191)
> >>>  at
> >>>
> se.digia.connect.core.service.RouteServiceBase.doStart(RouteServiceBase.java:51)
> >>> at se.digia.connect.core.service.ServiceBase.start(ServiceBase.java:50)
> >>>  at
> >>>
> se.digia.connect.services.skandia.filetransfer.FileTransferService.__start(FileTransferService.java:63)
> >>> at
> >>>
> se.digia.connect.services.skandia.filetransfer.FileTransferService.start(FileTransferService.java)
> >>>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)[:1.6.0_07]
> >>> at
> >>>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)[:1.6.0_07]
> >>>  at
> >>>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_07]
> >>> at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_07]
> >>>  at
> >>>
> org.apache.felix.ipojo.util.Callback.call(Callback.java:237)[77:org.apache.felix.ipojo:1.7.0.SNAPSHOT]
> >>> at
> >>>
> org.apache.felix.ipojo.util.Callback.call(Callback.java:193)[77:org.apache.felix.ipojo:1.7.0.SNAPSHOT]
> >>>  at
> >>>
> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallback.call(LifecycleCallback.java:86)[77:org.apache.felix.ipojo:1.7.0.SNAPSHOT]
> >>>  at
> >>>
> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__stateChanged(LifecycleCallbackHandler.java:162)[77:org.apache.felix.ipojo:1.7.0.SNAPSHOT]
> >>>  at
> >>>
> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java)[77:org.apache.felix.ipojo:1.7.0.SNAPSHOT]
> >>>  at
> >>>
> org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:441)[77:org.apache.felix.ipojo:1.7.0.SNAPSHOT]
> >>> at
> >>>
> org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:322)[77:org.apache.felix.ipojo:1.7.0.SNAPSHOT]
> >>>  at
> >>>
> org.apache.felix.ipojo.InstanceManager.reconfigure(InstanceManager.java:1169)[77:org.apache.felix.ipojo:1.7.0.SNAPSHOT]
> >>> at
> >>>
> org.apache.felix.ipojo.IPojoFactory.reconfigure(IPojoFactory.java:481)[77:org.apache.felix.ipojo:1.7.0.SNAPSHOT]
> >>>  at
> >>>
> org.apache.felix.ipojo.IPojoFactory.updated(IPojoFactory.java:648)[77:org.apache.felix.ipojo:1.7.0.SNAPSHOT]
> >>> at
> >>>
> org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1460)[5:org.apache.felix.configadmin:1.2.4]
> >>>  at
> >>>
> org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:88)[5:org.apache.felix.configadmin:1.2.4]
> >>> Caused by: java.lang.NullPointerException
> >>>  at javax.management.ObjectName.quote(ObjectName.java:1846)[:1.6.0_07]
> >>> at
> >>>
> org.apache.camel.management.DefaultManagementNamingStrategy.getObjectNameForCamelContext(DefaultManagementNamingStrategy.java:95)
> >>>  at
> >>>
> org.apache.camel.management.DefaultManagementLifecycleStrategy.onContextStart(DefaultManagementLifecycleStrategy.java:128)
> >>> ... 25 more
> >>>
> >>> /Bengt
> >>>
> >>
> >
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > FuseSource
> > Email: [email protected]
> > Web: http://fusesource.com
> > Twitter: davsclaus
> > Blog: http://davsclaus.blogspot.com/
> > Author of Camel in Action: http://www.manning.com/ibsen/
> >
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: [email protected]
> Web: http://fusesource.com
> Twitter: davsclaus
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>

Reply via email to