camel:run doesn't support to provide the OSGi services like you used in
the ServiceMix.
If you want support the camel:run with your osgi application bundle. You
may consider to provide your camel context with two layer.
one is for the pure Spring configuration without any OSGi service, you
should not put it into some place like "META-INF/camel/" instead of the
"META-INF/spring/" directory.
The other is wrap the configure file with OSGi configure Admin service,
then you can using include resource to load the pure camel context like
this.
<import resource="classpath:META-INF/camel/camel.xml" />
You can specify the Spring configure file url in the camel maven plugin
like this and include the properties holder configurer properties.xml
like this
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-maven-plugin</artifactId>
<version>${camel.version}</version>
<configuration>
<!-- the spring context file must be separate from
the OSGi bundle, so we provide one here -->
<fileApplicationContextUri>src/main/resources/META-INF/camel/camel.xml;src/main/resources/META-INF/camel/properties.xml
</fileApplicationContextUri>
</configuration>
</plugin>
On 7/18/11 3:59 PM, Dinesh wrote:
We have camel based application as OSGi bundle and were able to run using
[mvn camel:run] apart from deploying it as a bundle in Servicemix.
Later we moved the properties file out of bundle.For this we have used
Compendium Services.This facilitates us to keep the configuration file
outside the bundle (in Servicemix_HOME/etc folder).To implement this we have
addded http://www.springframework.org/schema/osgi-compendium" namespace
handler in the camel-context file. This namespace handler is part of
Spring-DM. So now we are we forced to deploy it in OSGi container. We can't
use [mvn camel:run]
Is there any way that we can run this using [mvn camel:run] without removing
osgi-compendium namespace handler from camel-context file(so that we can
keep the configuration file outside bundle in case when we deploy in OSGi
container)?
When using [mvn camel:run], we are getting the exception:
Error occurred while running main from: org.apache.camel.spring.Main
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.apache.camel.maven.RunMojo$1.run(RunMojo.java:415)
at java.lang.Thread.run(Thread.java:662)
Caused by:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Unable to locate Spring NamespaceHandler for XML
schema namespace [http://www.springframework.org/schema/osgi-compendium]
Offending resource: file
[D:\poc\camel-osgi-wkf\target\classes\META-INF\spring\camel-context.xml]
at
org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
at
org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
at
org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)
at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:284)
at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1332)
at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1325)
Our camel-context.xml is:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
xmlns:ctx="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi-1.2.xsd
http://www.springframework.org/schema/osgi-compendium
http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium-1.2.xsd">
<camelContext id="test-wkf"
xmlns="http://camel.apache.org/schema/spring">
<propertyPlaceholder id="properties" location="ref:testcfg" />
<routeBuilder ref="TestRoute" />
</camelContext>
<osgix:cm-properties id="testcfg" persistent-id="config" />
<ctx:property-placeholder properties-ref="testcfg" />
.........
.........
</beans>
Any help/suggestion will be highly appreciated.
--
View this message in context:
http://camel.465427.n5.nabble.com/Problem-with-Camel-osgi-compendium-and-mvn-camel-run-tp4598536p4598536.html
Sent from the Camel - Users mailing list archive at Nabble.com.
--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang