Yes, declare the component in the spring configuration file just a walk
around solution.

I can dig the code of quickfix resource loading later today.

Willem

Claus Ibsen wrote:
> 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
>>>>>
>>>>
> 
> 
> 

Reply via email to