You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by Charles Moulliard <cm...@gmail.com> on 2009/05/05 17:12:06 UTC

Re: Fwd: [Question] About Camel Spring and registration of new endpoint (camel-quickfix)

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 <wi...@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
> >
>
>

Re: Fwd: [Question] About Camel Spring and registration of new endpoint (camel-quickfix)

Posted by Willem Jiang <wi...@gmail.com>.
Hi Charles

Done, I added the comments for the ContextClassLoader setting codes.
Please feel free to apply patch if you find any thing wrong.

Cheers,

Willem

Charles Moulliard wrote:
> Yes. But I need after that to create a patch because I don't have WRITE
> access to SVN now.
> 
> Otherwise, we have added this code in the class QuickFixInitiator &
> QuickFixAcceptor
> :
>             ClassLoader ccl =
> Thread.currentThread().getContextClassLoader();
>             try {
> 
> Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
> 
>                 acceptor = new SocketAcceptor(application, storeFactory,
> settings, logFactory,
>                                               new DefaultMessageFactory());
> 
>                 acceptor.start();
>             } finally {
>                 Thread.currentThread().setContextClassLoader(ccl);
>             }
> 
>  to solution the classloading issue raised by the class
> quickfix.DefaultMessageFactory
> 
> smx@root:osgi> Exception in thread "SpringOsgiExtenderThread-34"
> java.lang.NoClassDefFoundError: quickfix/fix41/MessageFactory
>         at
> quickfix.DefaultMessageFactory.<init>(DefaultMessageFactory.java:30)
>         at
> org.apache.camel.component.quickfix.QuickfixAcceptor$QuickfixAcceptorEndpoint.start(QuickfixAcceptor.java:62)
>         at
> org.apache.camel.component.quickfix.QuickfixEndpoint.start(QuickfixEndpoint.java:179)
> 
> see here : http://www.eclipsezone.com/eclipse/forums/t61831.html and here
> for more info
> http://mail-archives.apache.org/mod_mbox/felix-users/200803.mbox/%3C487a994c0803101208h51289b9dg4c68f01a4536eb82@mail.gmail.com%3E
> 
> Regards,
> 
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
> 
> *****************************
> blog : http://cmoulliard.blogspot.com
> 
> 
> On Thu, May 7, 2009 at 10:32 AM, Willem Jiang <wi...@gmail.com>wrote:
> 
>> Hi Charles,
>>
>> Just a quick question for your change of camel-quickfix?
>> Can you add some comments on
>> "Thread.currentThread().setContextClassLoader added in quickFixAcceptor
>> and Initiator"
>>
>> Willem
>>
>> Charles Moulliard wrote:
>>> Hi Willem,
>>>
>>> I haven't deploy mina and it works in my OSGI environment. I will deploy
>> the
>>> mina-core as you propose and see the result.
>>>
>>> BTW, the current code is not yet ready to be used. Modifications must be
>>> done concerning logging strategy, .... and probably about how we can
>> receive
>>> FIX messages. Why, the current quickfix package is able to connect to a
>> FIX
>>> server and exchange messages but the messages received are converted into
>>> quickfix.FIX40 java classes. *I prefer that the user can choose the
>>> dataformat he would like to use (by default can be String (= FIX
>> content),
>>> quickfix.FIX4x, BindyDataFormat, ....)*. How it is another question
>> because
>>> I'm quite sure that we need to modify quickfix package. I have tried to
>>> contact quickfix team but it is for moment "---------". As quickfix is
>> also
>>> used by third parties companies providing billable support including
>>> resources of the project !
>>>
>>> Regards,
>>>
>>> Charles Moulliard
>>> Senior Enterprise Architect
>>> Apache Camel Committer
>>>
>>> *****************************
>>> blog : http://cmoulliard.blogspot.com
>>>
>>>
>>> On Wed, May 6, 2009 at 6:04 PM, Willem Jiang <wi...@gmail.com>
>> wrote:
>>>> Hi Charles
>>>>
>>>> After changed the pom.xml to make camel-quickfix component as bundle, I
>>>> managed to load it in Pax-Exam.
>>>> BTW, you need to wrap the quickfix and mina-core jars.
>>>>
>>>>
>>>>
>> wrappedBundle(mavenBundle().groupId("org.quickfixj").artifactId("quickfixj-all").version("1.4.0")),
>>>>
>>>>
>> wrappedBundle(mavenBundle().groupId("org.apache.mina").artifactId("mina-core").version("1.1.7")),
>>>>
>>>> Willem
>>>>
>>>>
>>>> Charles Moulliard wrote:
>>>>> Hi,
>>>>>
>>>>> I will first check the code in order to be able to run it in Camel with
>>>>> quickfix/j (it seems that there is a classloading issue inside
>>>> quickfix/j,
>>>>> ...) and deploy it in OSGI server.
>>>>> After, I will check why there is an issue with the XML file, ....
>>>>>
>>>>> Regards
>>>>>
>>>>> Charles Moulliard
>>>>> Senior Enterprise Architect
>>>>> Apache Camel Committer
>>>>>
>>>>> *****************************
>>>>> blog : http://cmoulliard.blogspot.com
>>>>>
>>>>>
>>>>> On Wed, May 6, 2009 at 6:51 AM, Willem Jiang <wi...@gmail.com>
>>>> wrote:
>>>>>> 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 <
>>>> 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
>>>>>>>>>>>
>>
> 


Re: Fwd: [Question] About Camel Spring and registration of new endpoint (camel-quickfix)

Posted by Charles Moulliard <cm...@gmail.com>.
Yes. But I need after that to create a patch because I don't have WRITE
access to SVN now.

Otherwise, we have added this code in the class QuickFixInitiator &
QuickFixAcceptor
:
            ClassLoader ccl =
Thread.currentThread().getContextClassLoader();
            try {

Thread.currentThread().setContextClassLoader(getClass().getClassLoader());

                acceptor = new SocketAcceptor(application, storeFactory,
settings, logFactory,
                                              new DefaultMessageFactory());

                acceptor.start();
            } finally {
                Thread.currentThread().setContextClassLoader(ccl);
            }

 to solution the classloading issue raised by the class
quickfix.DefaultMessageFactory

smx@root:osgi> Exception in thread "SpringOsgiExtenderThread-34"
java.lang.NoClassDefFoundError: quickfix/fix41/MessageFactory
        at
quickfix.DefaultMessageFactory.<init>(DefaultMessageFactory.java:30)
        at
org.apache.camel.component.quickfix.QuickfixAcceptor$QuickfixAcceptorEndpoint.start(QuickfixAcceptor.java:62)
        at
org.apache.camel.component.quickfix.QuickfixEndpoint.start(QuickfixEndpoint.java:179)

see here : http://www.eclipsezone.com/eclipse/forums/t61831.html and here
for more info
http://mail-archives.apache.org/mod_mbox/felix-users/200803.mbox/%3C487a994c0803101208h51289b9dg4c68f01a4536eb82@mail.gmail.com%3E

Regards,

Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com


On Thu, May 7, 2009 at 10:32 AM, Willem Jiang <wi...@gmail.com>wrote:

> Hi Charles,
>
> Just a quick question for your change of camel-quickfix?
> Can you add some comments on
> "Thread.currentThread().setContextClassLoader added in quickFixAcceptor
> and Initiator"
>
> Willem
>
> Charles Moulliard wrote:
> > Hi Willem,
> >
> > I haven't deploy mina and it works in my OSGI environment. I will deploy
> the
> > mina-core as you propose and see the result.
> >
> > BTW, the current code is not yet ready to be used. Modifications must be
> > done concerning logging strategy, .... and probably about how we can
> receive
> > FIX messages. Why, the current quickfix package is able to connect to a
> FIX
> > server and exchange messages but the messages received are converted into
> > quickfix.FIX40 java classes. *I prefer that the user can choose the
> > dataformat he would like to use (by default can be String (= FIX
> content),
> > quickfix.FIX4x, BindyDataFormat, ....)*. How it is another question
> because
> > I'm quite sure that we need to modify quickfix package. I have tried to
> > contact quickfix team but it is for moment "---------". As quickfix is
> also
> > used by third parties companies providing billable support including
> > resources of the project !
> >
> > Regards,
> >
> > Charles Moulliard
> > Senior Enterprise Architect
> > Apache Camel Committer
> >
> > *****************************
> > blog : http://cmoulliard.blogspot.com
> >
> >
> > On Wed, May 6, 2009 at 6:04 PM, Willem Jiang <wi...@gmail.com>
> wrote:
> >
> >> Hi Charles
> >>
> >> After changed the pom.xml to make camel-quickfix component as bundle, I
> >> managed to load it in Pax-Exam.
> >> BTW, you need to wrap the quickfix and mina-core jars.
> >>
> >>
> >>
> wrappedBundle(mavenBundle().groupId("org.quickfixj").artifactId("quickfixj-all").version("1.4.0")),
> >>
> >>
> >>
> wrappedBundle(mavenBundle().groupId("org.apache.mina").artifactId("mina-core").version("1.1.7")),
> >>
> >>
> >> Willem
> >>
> >>
> >> Charles Moulliard wrote:
> >>> Hi,
> >>>
> >>> I will first check the code in order to be able to run it in Camel with
> >>> quickfix/j (it seems that there is a classloading issue inside
> >> quickfix/j,
> >>> ...) and deploy it in OSGI server.
> >>> After, I will check why there is an issue with the XML file, ....
> >>>
> >>> Regards
> >>>
> >>> Charles Moulliard
> >>> Senior Enterprise Architect
> >>> Apache Camel Committer
> >>>
> >>> *****************************
> >>> blog : http://cmoulliard.blogspot.com
> >>>
> >>>
> >>> On Wed, May 6, 2009 at 6:51 AM, Willem Jiang <wi...@gmail.com>
> >> wrote:
> >>>> 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 <
> >> 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
> >>>>>>>>>
> >>>>>
> >>
> >
>
>

Re: Fwd: [Question] About Camel Spring and registration of new endpoint (camel-quickfix)

Posted by Willem Jiang <wi...@gmail.com>.
Hi Charles,

Just a quick question for your change of camel-quickfix?
Can you add some comments on
"Thread.currentThread().setContextClassLoader added in quickFixAcceptor
and Initiator"

Willem

Charles Moulliard wrote:
> Hi Willem,
> 
> I haven't deploy mina and it works in my OSGI environment. I will deploy the
> mina-core as you propose and see the result.
> 
> BTW, the current code is not yet ready to be used. Modifications must be
> done concerning logging strategy, .... and probably about how we can receive
> FIX messages. Why, the current quickfix package is able to connect to a FIX
> server and exchange messages but the messages received are converted into
> quickfix.FIX40 java classes. *I prefer that the user can choose the
> dataformat he would like to use (by default can be String (= FIX content),
> quickfix.FIX4x, BindyDataFormat, ....)*. How it is another question because
> I'm quite sure that we need to modify quickfix package. I have tried to
> contact quickfix team but it is for moment "---------". As quickfix is also
> used by third parties companies providing billable support including
> resources of the project !
> 
> Regards,
> 
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
> 
> *****************************
> blog : http://cmoulliard.blogspot.com
> 
> 
> On Wed, May 6, 2009 at 6:04 PM, Willem Jiang <wi...@gmail.com> wrote:
> 
>> Hi Charles
>>
>> After changed the pom.xml to make camel-quickfix component as bundle, I
>> managed to load it in Pax-Exam.
>> BTW, you need to wrap the quickfix and mina-core jars.
>>
>>
>> wrappedBundle(mavenBundle().groupId("org.quickfixj").artifactId("quickfixj-all").version("1.4.0")),
>>
>>
>> wrappedBundle(mavenBundle().groupId("org.apache.mina").artifactId("mina-core").version("1.1.7")),
>>
>>
>> Willem
>>
>>
>> Charles Moulliard wrote:
>>> Hi,
>>>
>>> I will first check the code in order to be able to run it in Camel with
>>> quickfix/j (it seems that there is a classloading issue inside
>> quickfix/j,
>>> ...) and deploy it in OSGI server.
>>> After, I will check why there is an issue with the XML file, ....
>>>
>>> Regards
>>>
>>> Charles Moulliard
>>> Senior Enterprise Architect
>>> Apache Camel Committer
>>>
>>> *****************************
>>> blog : http://cmoulliard.blogspot.com
>>>
>>>
>>> On Wed, May 6, 2009 at 6:51 AM, Willem Jiang <wi...@gmail.com>
>> wrote:
>>>> 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 <
>> 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
>>>>>>>>>
>>>>>
>>
> 


Re: Fwd: [Question] About Camel Spring and registration of new endpoint (camel-quickfix)

Posted by Charles Moulliard <cm...@gmail.com>.
Hi Willem,

I haven't deploy mina and it works in my OSGI environment. I will deploy the
mina-core as you propose and see the result.

BTW, the current code is not yet ready to be used. Modifications must be
done concerning logging strategy, .... and probably about how we can receive
FIX messages. Why, the current quickfix package is able to connect to a FIX
server and exchange messages but the messages received are converted into
quickfix.FIX40 java classes. *I prefer that the user can choose the
dataformat he would like to use (by default can be String (= FIX content),
quickfix.FIX4x, BindyDataFormat, ....)*. How it is another question because
I'm quite sure that we need to modify quickfix package. I have tried to
contact quickfix team but it is for moment "---------". As quickfix is also
used by third parties companies providing billable support including
resources of the project !

Regards,

Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com


On Wed, May 6, 2009 at 6:04 PM, Willem Jiang <wi...@gmail.com> wrote:

> Hi Charles
>
> After changed the pom.xml to make camel-quickfix component as bundle, I
> managed to load it in Pax-Exam.
> BTW, you need to wrap the quickfix and mina-core jars.
>
>
> wrappedBundle(mavenBundle().groupId("org.quickfixj").artifactId("quickfixj-all").version("1.4.0")),
>
>
> wrappedBundle(mavenBundle().groupId("org.apache.mina").artifactId("mina-core").version("1.1.7")),
>
>
> Willem
>
>
> Charles Moulliard wrote:
> > Hi,
> >
> > I will first check the code in order to be able to run it in Camel with
> > quickfix/j (it seems that there is a classloading issue inside
> quickfix/j,
> > ...) and deploy it in OSGI server.
> > After, I will check why there is an issue with the XML file, ....
> >
> > Regards
> >
> > Charles Moulliard
> > Senior Enterprise Architect
> > Apache Camel Committer
> >
> > *****************************
> > blog : http://cmoulliard.blogspot.com
> >
> >
> > On Wed, May 6, 2009 at 6:51 AM, Willem Jiang <wi...@gmail.com>
> wrote:
> >
> >> 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 <
> 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
> >>>>>>>
> >>>
> >>>
> >>
> >
>
>

Re: Fwd: [Question] About Camel Spring and registration of new endpoint (camel-quickfix)

Posted by Willem Jiang <wi...@gmail.com>.
Hi Charles

After changed the pom.xml to make camel-quickfix component as bundle, I
managed to load it in Pax-Exam.
BTW, you need to wrap the quickfix and mina-core jars.

wrappedBundle(mavenBundle().groupId("org.quickfixj").artifactId("quickfixj-all").version("1.4.0")),

wrappedBundle(mavenBundle().groupId("org.apache.mina").artifactId("mina-core").version("1.1.7")),


Willem


Charles Moulliard wrote:
> Hi,
> 
> I will first check the code in order to be able to run it in Camel with
> quickfix/j (it seems that there is a classloading issue inside quickfix/j,
> ...) and deploy it in OSGI server.
> After, I will check why there is an issue with the XML file, ....
> 
> Regards
> 
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
> 
> *****************************
> blog : http://cmoulliard.blogspot.com
> 
> 
> On Wed, May 6, 2009 at 6:51 AM, Willem Jiang <wi...@gmail.com> wrote:
> 
>> 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 <cm...@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
>>>>>>>
>>>
>>>
>>
> 


Re: Fwd: [Question] About Camel Spring and registration of new endpoint (camel-quickfix)

Posted by Charles Moulliard <cm...@gmail.com>.
Hi,

I will first check the code in order to be able to run it in Camel with
quickfix/j (it seems that there is a classloading issue inside quickfix/j,
...) and deploy it in OSGI server.
After, I will check why there is an issue with the XML file, ....

Regards

Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com


On Wed, May 6, 2009 at 6:51 AM, Willem Jiang <wi...@gmail.com> wrote:

> 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 <cm...@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
> >>>>>
> >>>>
> >
> >
> >
>
>

Re: Fwd: [Question] About Camel Spring and registration of new endpoint (camel-quickfix)

Posted by Willem Jiang <wi...@gmail.com>.
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 <cm...@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 <cm...@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 <wi...@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
>>>>>
>>>>
> 
> 
> 


Re: Fwd: [Question] About Camel Spring and registration of new endpoint (camel-quickfix)

Posted by Claus Ibsen <cl...@gmail.com>.
On Tue, May 5, 2009 at 5:15 PM, Charles Moulliard <cm...@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 <cm...@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 <wi...@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

Re: Fwd: [Question] About Camel Spring and registration of new endpoint (camel-quickfix)

Posted by Charles Moulliard <cm...@gmail.com>.
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 ?


Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com


On Tue, May 5, 2009 at 5:12 PM, Charles Moulliard <cm...@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 <wi...@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
>> >
>>
>>
>