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

Reply via email to