Pluggable Class Resolvers
Camel provides pluggable class resolvers allowing third party platforms
and containers to provide their own resolvers in case the default ones
would not fit. For example we provide a
WebSpherePackageScanClassResolver
out of the box to
integrate Camel with IBM WebSphere.
Platform providers should look in the org.apache.camel.spi
package for
the pluggable resolvers below:
-
PackageScanClassResolver
-
ClassResolver
-
FactoryFinderResolver
In camel-osgi we provide OSGi aware class resolver allowing Camel to run in any OSGi container.
Configuration of a custom class resolver
To instruct Camel to use your own custom class resolver, you set the
resolver on the CamelContext
using the appropriate setters.
Easy configuration of a custom class resolver in Spring XML
We have provided easy configuration in Spring XML as you just need to declare a spring bean with your custom resolver and Camel will pick it up automatically.
<bean id="jbossresolver" class="com.mycompany.jboss.JBossPackageScanClassResolver"/>
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="seda:start"/>
<to uri="mock:result"/>
</route>
</camelContext>
In the sample above the CamelContext will automatic detect the
jbossresolver
bean and use it instead of its default one.
Configuration of a custom factory finder resolver
FactoryFinderResolver is used to get an instance of FactoryFinder
that
is used for lookup of resource files in the classpath in the
META-INF/services
. It is used internally by Camel to look in .jars for
Camel components. For instance to look for the file
component Camel
will use the FactoryFinder
to look the file named file
in
META-INF/services/org/apache/camel/component
. The CamelContext
have
methods to inject a custom FactoryFinderResolver
.
Easy configuration of a custom factory finder resolver in Spring XML
We have provided easy configuration in Spring XML as you just need to declare a spring bean with your custom factory finder resolver and Camel will pick it up automatically.
<bean id="jbossFactoryFinderResolver" class="com.mycompany.jboss.JBossFactoryFinderResolver"/>
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="seda:start"/>
<to uri="mock:result"/>
</route>
</camelContext>