camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Fwd: [Question] About Camel Spring and registration of new endpoint (camel-quickfix)
Date Wed, 06 May 2009 04:34:57 GMT
On Tue, May 5, 2009 at 5:15 PM, Charles Moulliard <cmoulliard@gmail.com> 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 <cmoulliard@gmail.com>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 :
>>
>> smx@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 <willem.jiang@gmail.com>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

Mime
View raw message