Since we're on a major migration process of this website, some component documents here are out of sync right now. In the meantime you may want to look at the early version of the new website
https://camel.apache.org/staging/
We would very much like to receive any feedback on the new site, please join the discussion on the Camel user mailing list.

Exception: javax.naming.NoInitialContextException

If you try to use Camel without Spring using code something like this

CamelContext context = new DefaultCamelContext();
context.addRoutes(new MyRouteBuilder());

context.start();

You might get an exception like this

     [java] Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
     [java] 	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
     [java] 	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
     [java] 	at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
     [java] 	at javax.naming.InitialContext.lookup(InitialContext.java:351)
     [java] 	at org.apache.camel.impl.JndiRegistry.lookup(JndiRegistry.java:51)

This is because if you are not using Spring then the default Registry implementation uses JNDI.

A simple workaround for this is to specify a JNDI provider. An easy fix is to create a file called jndi.properties on the classpath and give it this content...

java.naming.factory.initial = org.apache.camel.util.jndi.CamelInitialContextFactory
© 2004-2015 The Apache Software Foundation.
Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
Graphic Design By Hiram