On Tue, May 5, 2009 at 5:15 PM, Charles Moulliard <[email protected]> wrote: > With the following config, it works : > > <bean id="quickfix-server" > class="org.apache.camel.quickfix.QuickfixAcceptor"/> > <bean id="quickfix-client" > class="org.apache.camel.quickfix.QuickfixInitiator"/> > > > <camel:camelContext trace="true" xmlns=" > http://camel.apache.org/schema/osgi"> > <camel:route> > <camel:from uri="quickfix-server:META-INF/examples/server.cfg"/> > <camel:to uri="quickfix-client:META-INF/examples/client.cfg"/> > </camel:route> > </camel:camelContext> > > Any idea why we have to declare the beans ? No but its your job to dig into the code base :)
I assume the code that reads the resources from the URI has a flaw. I can help with this later. The important part is to make sure the camel-quickfix component works, has the features we want and is properly tested etc. Then later we can fix the minor issues with resource loading. It should support loading in classpath, file, and OSGi :) > > > Charles Moulliard > Senior Enterprise Architect > Apache Camel Committer > > ***************************** > blog : http://cmoulliard.blogspot.com > > > On Tue, May 5, 2009 at 5:12 PM, Charles Moulliard <[email protected]>wrote: > >> 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 >>> > >>> >>> >> > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus Apache Camel Reference Card: http://refcardz.dzone.com/refcardz/enterprise-integration Interview with me: http://architects.dzone.com/articles/interview-claus-ibsen-about?mz=7893-progress
