I have modified the spring xml file like you propose :
<camel:camelContext trace="true" xmlns="http://camel.apache.org/schema/osgi
">
<camel:route>
<camel:from uri="quickfix-server:examples/server.cfg"/>
<camel:to uri="quickfix-client:examples/client.cfg"/>
</camel:route>
</camel:camelContext>
and now we have the error :
s...@root:osgi> Exception in thread "SpringOsgiExtenderThread-63"
org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint:
quickfix-server:examples/ser
ver.cfg due to: java.io.FileNotFoundException: class path resource
[examples/server.cfg] cannot be opened because it does not exist
at
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:378)
at
org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:52)
at
org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:133)
at
org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:103)
at
org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:109)
at
org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:72)
at
org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:78)
at
org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:302)
at
org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:121)
at
org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:481)
at
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:777)
at
org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:759)
at
org.apache.camel.spring.SpringCamelContext.maybeDoStart(SpringCamelContext.java:165)
at
org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:160)
at
org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:50)
at
org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:95)
at
org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:114)
at
org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)
at
org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
at
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)
at
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274)
at
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736)
at
org.springframework.osgi.context.support.AbstractOsgiBundleApplicationContext.finishRefresh(AbstractOsgiBundleApplicationContext.java:235)
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:358)
at
org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)
at
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationC
ontextExecutor.java:136)
at java.lang.Thread.run(Thread.java:619)
*Caused by: java.io.FileNotFoundException: class path resource
[examples/server.cfg] cannot be opened because it does not exist*
at
org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:143)
at
org.apache.camel.quickfix.QuickfixEndpoint.start(QuickfixEndpoint.java:167)
at
org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:510)
at
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:372)
... 27 more
I will change the path and retest
Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer
*****************************
blog : http://cmoulliard.blogspot.com
On Tue, May 5, 2009 at 5:08 PM, Willem Jiang <[email protected]> wrote:
> Hi Charles,
>
> I just checked the code with the stack trace, and found this issue may
> caused by the java.lang.NullPointerException.
>
> Here is the code snippet of the OsgiComponentResolver.
> try {
> type = getComponent(name);
> } catch (Throwable e) {
> throw new IllegalArgumentException("Invalid URI, no
> Component registered for schema : " + name, e);
> }
>
> The getComponent() method just search the bundle entry for the component.
>
> I have no idea why the NPE will be thrown from this getComponent() method.
>
> Willem
>
> Charles Moulliard wrote:
> > Hi,
> >
> > I'm currently working on the new camel-quickfix component provided by
> Anton
> > Arhipov.
> >
> > I have created a camel spring xml file to use it :
> >
> > <camel:camelContext trace="true" xmlns="
> > http://camel.apache.org/schema/osgi">
> > <camel:route>
> > <camel:from uri="quickfix-server:examples/server.cfg"/>
> > <camel:to uri="quickfix-client:examples/client.cfg"/>
> > </camel:route>
> > </camel:camelContext>
> >
> > but when the component is launched, I receive the following error :
> >
> > 16:25:20,625 | ERROR | xtenderThread-53 | ContextLoaderListener
> |
> > BundleApplicationContextListener 50 | Application context refresh
> failed
> > (OsgiBundleXmlApplicationContext(bundle=reportincident.quickfix,
> > config=osgibundle:/META-INF/spring/*.xml))
> > org.apache.camel.ResolveEndpointFailedException: *Failed to resolve
> > endpoint: quickfix-server:examples/server.cfg* due to:
> > org.apache.camel.RuntimeCamelException: Could not auto create component:
> > quickfix-server
> > at
> >
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:378)
> > at
> >
> org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:52)
> > at
> >
> org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:133)
> > at
> >
> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:103)
> > at
> >
> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:109)
> > at
> >
> org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:72)
> > at
> >
> org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:78)
> > at
> >
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:302)
> > at
> >
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:121)
> > at
> >
> org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:481)
> > at
> >
> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:777)
> > at
> >
> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:759)
> > at
> >
> org.apache.camel.spring.SpringCamelContext.maybeDoStart(SpringCamelContext.java:165)
> > at
> >
> org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:160)
> > at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:50)
> > at
> >
> org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:95)
> > at
> >
> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:114)
> > at
> >
> org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)
> > at
> >
> org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
> > at
> >
> org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)
> > at
> >
> org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274)
> > at
> >
> org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736)
> > at
> >
> org.springframework.osgi.context.support.AbstractOsgiBundleApplicationContext.finishRefresh(AbstractOsgiBundleApplicationContext.java:235)
> > at
> >
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:358)
> > at
> >
> org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
> > at
> >
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)
> > at
> >
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:136)
> > at java.lang.Thread.run(Thread.java:619)
> > Caused by: org.apache.camel.RuntimeCamelException: Could not auto create
> > component: quickfix-server
> > at
> >
> org.apache.camel.impl.DefaultCamelContext.getComponent(DefaultCamelContext.java:211)
> > at
> >
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:354)
> > ... 27 more
> > Caused by: java.lang.IllegalArgumentException: *Invalid URI, no Component
> > registered for scheme : quickfix-server*
> > at
> >
> org.apache.camel.osgi.OsgiComponentResolver.resolveComponent(OsgiComponentResolver.java:66)
> > at
> >
> org.apache.camel.impl.DefaultCamelContext.getComponent(DefaultCamelContext.java:201)
> > ... 28 more
> > Caused by: java.lang.NullPointerException
> > When looking in the code provided, I see that Anton has created under the
> > directory META-INF/services, the following files :
> >
> > org\apache\camel\component\quickfix-server
> >
> > class=org.apache.camel.quickfix.QuickfixAcceptor
> >
> > org\apache\camel\component\quickfix-client
> >
> > class=org.apache.camel.quickfix.QuickfixInitiator
> >
> > Is it enough to register new camel endpoints ?
> >
> > Regards,
> >
> > Charles Moulliard
> > Senior Enterprise Architect
> > Apache Camel Committer
> >
> > *****************************
> > blog : http://cmoulliard.blogspot.com
> >
>
>