On Wed, Jan 19, 2011 at 2:26 PM, Scott Came <[email protected]> wrote: > OK I'm confused... I have Fuse ESB 4.3.0-03-00 installed. From the log > messages I included in my message yesterday, it looks like my install > includes Camel Fuse 2.4.0.fuse-02-00. (Reference log message: >>>> > 16:52:10,680 | INFO | @qtp-727842206-0 | DefaultTypeConverter | > l.converter.DefaultTypeConverter 397 | 72 - org.apache.camel.camel-core - > 2.4.0.fuse-02-00 | Loaded 0 type converters in 0.003 seconds.) > > Do I need Camel Fuse 2.4.0.fuse-03-00 to get the fix, and if so is that now > available in the Fuse ESB 4.3.0-03-00 download (I just installed ESB > 4.3.0-03-00 late last week)? > > If not, is there something else that's causing the type converters not to get > loaded? >
Its this bug which was fixed dec-20-2010 http://fusesource.com/issues/browse/MR-392 And -03 hasn't been released yet. > Thanks for all your help... > --Scott > > -----Original Message----- > From: Claus Ibsen [mailto:[email protected]] > Sent: Wednesday, January 19, 2011 5:14 AM > To: [email protected] > Subject: Re: Large(ish) message issue (CXFBC and Camel) > > On Wed, Jan 19, 2011 at 1:59 PM, Scott Came <[email protected]> wrote: >> Fuse ESB 4.3.0-03-00 is what I'm using...it contains Camel 2.4. If I >> understand Claus correctly, I need Camel 2.6... >> > > No the bug is fixed in FUSE Camel 2.4. (latest version of FUSE 2.4 version). > At Apache the bug is only to be fixed in the upcoming Camel 2.6 release. > > >> -----Original Message----- >> From: Willem Jiang [mailto:[email protected]] >> Sent: Wednesday, January 19, 2011 2:02 AM >> To: [email protected] >> Subject: Re: Large(ish) message issue (CXFBC and Camel) >> >> Why don't you just download the Fuse ESB 4.3.0-fuse-03-00? >> You don't need to build the component yourself. >> >> On 1/19/11 10:34 AM, Scott Came wrote: >>> I've actually succeeded in building the 2011.01-SNAPSHOT version of >>> servicemix-camel that's in SVN. I have the component .jar and installer >>> .zip in my local maven repository now. >>> >>> Any reason why I shouldn't be able to install that in >>> servicemix-4.3.0-fuse-03-00? Do I just drop the zip file in the deploy >>> directory? Do I need to be worried about conflicts with the currently >>> installed version of Camel (i.e., should I uninstall)? >>> >>> Excuse the newbie questions...is there a way to deploy this snapshot via >>> the features mechanism? >>> >>> Anyway, if I can get this going I'd be happy to testdrive the >>> 2011.01-SNAPSHOT build of servicemix-camel... >>> >>> Thanks. >>> --Scott >>> >>> -----Original Message----- >>> From: Scott Came [mailto:[email protected]] >>> Sent: Tuesday, January 18, 2011 12:33 PM >>> To: [email protected] >>> Subject: RE: Large(ish) message issue (CXFBC and Camel) >>> >>> Thanks, Claus. Is there anything I can do in the meantime? Is the fix in >>> a current Camel build? If so, are there docs on how to update the Camel >>> components in SM? >>> >>> --Scott >>> >>> -----Original Message----- >>> From: Claus Ibsen [mailto:[email protected]] >>> Sent: Tuesday, January 18, 2011 7:56 AM >>> To: [email protected] >>> Subject: Re: Large(ish) message issue (CXFBC and Camel) >>> >>> On Tue, Jan 18, 2011 at 4:54 PM, Claus Ibsen<[email protected]> wrote: >>>> On Tue, Jan 18, 2011 at 4:18 PM, Scott Came<[email protected]> wrote: >>>>> Thanks, Claus. >>>>> >>>>> I grepped my logs for AnnotationTypeConverterLoader and see a line like >>>>> this: >>>>> >>>>> 16:52:10,678 | INFO | @qtp-727842206-0 | >>>>> AnnotationTypeConverterLoader | er.AnnotationTypeConverterLoader >>>>> 66 | 72 - org.apache.camel.camel-core - 2.4.0.fuse-02-00 | Found 3 >>>>> packages with 0 @Converter classes to load >>>>> >>>>> Grepped for DefaultTypeConverter and see this: >>>>> >>>>> 16:52:10,680 | INFO | @qtp-727842206-0 | DefaultTypeConverter >>>>> | l.converter.DefaultTypeConverter 397 | 72 - >>>>> org.apache.camel.camel-core - 2.4.0.fuse-02-00 | Loaded 0 type >>>>> converters in 0.003 seconds >>>>> >>>>> I'm guessing that's not good. I am running the current release version >>>>> of FUSE ESB (apache-servicemix-4.3.0-fuse-03-00). I'm not sure what >>>>> version of Camel is included, but I haven't done anything to update Camel >>>>> outside of the stock FUSE ESB distro. It looks from the above log >>>>> message like it's Camel 2.4.0.fuse-02-00. >>>>> >>>> >>>> Yeah it should be fixed in FUSE ESB 4.3.1 which includes Camel >>>> 2.4.0-fuse-03-00 which has the fix. >>>> >>> >>> Correction, that would be the next FUSE ESB 4.3.0 release. >>> >>> I think there is a ESB 4.3.1 planned later this month/next month which will >>> ship with Camel 2.6 (currently in progress). >>> >>> >>>> From Camel 2.6 onwards we actually now will throw an exception on >>>> starting Camel if this situation happens again. >>>> Then it should be much easier for end user to spot something is wrong. >>>> >>>> >>>> >>>> >>>>> Thanks for your help. >>>>> --Scott >>>>> >>>>> -----Original Message----- >>>>> From: Claus Ibsen [mailto:[email protected]] >>>>> Sent: Monday, January 17, 2011 10:05 PM >>>>> To: [email protected] >>>>> Subject: Re: Large(ish) message issue (CXFBC and Camel) >>>>> >>>>> What versions of the products are you using? SMX / Camel? >>>>> And how do you startup the SMX container? >>>>> >>>>> I think there was a bug when using JBI with SMX 4.x that could lead to >>>>> Camel not being able to load type converters on startup (race condition >>>>> when using OSGi). This should be fixed in upcoming Apache SMX 4.3 release >>>>> and already in the latest FUSE ESB release. >>>>> >>>>> You should see something like this at INFO level logged by Camel on >>>>> startup (requires Camel 2.3 or better) >>>>> >>>>> 2011-01-18 07:05:00,519 [main ] INFO >>>>> AnnotationTypeConverterLoader - Found 3 packages with 19 >>>>> @Converter classes to load >>>>> 2011-01-18 07:05:00,567 [main ] INFO >>>>> DefaultTypeConverter >>>>> - Loaded 150 type converters in 1.038 seconds >>>>> >>>>> >>>>> >>>>> On Tue, Jan 18, 2011 at 5:42 AM, Scott Came<[email protected]> wrote: >>>>>> Hi Freeman, thanks for the suggestion. >>>>>> >>>>>> I tried that and am seeing the same results. After consulting the Camel >>>>>> documentation about stream caching at >>>>>> http://camel.apache.org/stream-caching.html I tried various flavors of >>>>>> specifying it (e.g., specifying streamCache="true" on camelContext and >>>>>> streamCaching="true" and streamCache="true" on route)...none of those >>>>>> helped. >>>>>> >>>>>> I also tried removing the<to> element for the log message, and that >>>>>> didn't help either. >>>>>> >>>>>> It's like in the case of both<to uri="log..."> and<to uri="file..."> >>>>>> the stream from the jbi: endpoint is getting cut off after 1000-2000 >>>>>> bytes. Very strange. >>>>>> >>>>>> I set the log level to DEBUG, and I get a big nested stack trace at the >>>>>> expected place, with this as the last exception listed: >>>>>> >>>>>> Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected end of >>>>>> input block in start tag >>>>>> at [row,col {unknown-source}]: [51,20] >>>>>> at >>>>>> com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOB(StreamScanner.java: >>>>>> 69 >>>>>> 6) >>>>>> at >>>>>> com.ctc.wstx.sr.StreamScanner.loadMoreFromCurrent(StreamScanner.ja >>>>>> v >>>>>> a >>>>>> :1 >>>>>> 062) >>>>>> at >>>>>> com.ctc.wstx.sr.StreamScanner.getNextCharFromCurrent(StreamScanner. >>>>>> j >>>>>> av >>>>>> a:807) >>>>>> at >>>>>> com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader. >>>>>> ja >>>>>> va:2892) >>>>>> at >>>>>> com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java: >>>>>> 2783) >>>>>> at >>>>>> com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1048 >>>>>> ) >>>>>> at >>>>>> org.apache.servicemix.soap.util.stax.FragmentStreamReader.next(Fra >>>>>> g >>>>>> m >>>>>> en >>>>>> tStreamReader.java:68) >>>>>> at >>>>>> org.apache.servicemix.cxfbc.interceptors.StaxJbiWrapper.next(StaxJ >>>>>> b >>>>>> i >>>>>> Wr >>>>>> apper.java:166) >>>>>> at >>>>>> org.apache.servicemix.soap.util.stax.StaxSource.parse(StaxSource.java: >>>>>> 116) >>>>>> ... 54 more >>>>>> >>>>>> Incidentally, the first exception (top of the stack) is this: >>>>>> >>>>>> org.apache.camel.InvalidPayloadException: No body available of type: >>>>>> java.lang.String but has value: >>>>>> org.apache.servicemix.soap.util.stax.StaxSource@4f6a4207 of type: >>>>>> org.apache.servicemix.soap.util.stax.StaxSource on: Message: >>>>>> org.apache.servicemix.soap.util.stax.StaxSource@4f6a4207. Caused by: >>>>>> No type converter available to convert from type: >>>>>> org.apache.servicemix.soap.util.stax.StaxSource to the required type: >>>>>> java.lang.String with value >>>>>> org.apache.servicemix.soap.util.stax.StaxSource@4f6a4207. >>>>>> Exchange[Message: >>>>>> org.apache.servicemix.soap.util.stax.StaxSource@4f6a4207]. Caused by: >>>>>> [org.apache.camel.NoTypeConversionAvailableException - No type >>>>>> converter available to convert from type: >>>>>> org.apache.servicemix.soap.util.stax.StaxSource to the required type: >>>>>> java.lang.String with value >>>>>> org.apache.servicemix.soap.util.stax.StaxSource@4f6a4207] >>>>>> at >>>>>> org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSuppo >>>>>> r >>>>>> t >>>>>> .j >>>>>> ava:103) >>>>>> at >>>>>> org.apache.camel.processor.ConvertBodyProcessor.process(ConvertBod >>>>>> y >>>>>> P >>>>>> ro >>>>>> cessor.java:57) >>>>>> at >>>>>> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$Proces >>>>>> s >>>>>> o >>>>>> rT >>>>>> oAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50) >>>>>> at >>>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorH >>>>>> e >>>>>> l >>>>>> pe >>>>>> r.java:70) >>>>>> at >>>>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(Dele >>>>>> g >>>>>> a >>>>>> te >>>>>> AsyncProcessor.java:98) >>>>>> at >>>>>> org.apache.camel.processor.DelegateAsyncProcessor.process(Delegate >>>>>> A >>>>>> s >>>>>> yn >>>>>> cProcessor.java:89) >>>>>> at >>>>>> org.apache.camel.management.InstrumentationProcessor.process(Instr >>>>>> u >>>>>> m >>>>>> en >>>>>> tationProcessor.java:68) >>>>>> at >>>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorH >>>>>> e >>>>>> l >>>>>> pe >>>>>> r.java:70) >>>>>> at >>>>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(Dele >>>>>> g >>>>>> a >>>>>> te >>>>>> AsyncProcessor.java:98) >>>>>> at >>>>>> org.apache.camel.processor.DelegateAsyncProcessor.process(Delegate >>>>>> A >>>>>> s >>>>>> yn >>>>>> cProcessor.java:89) >>>>>> at >>>>>> org.apache.camel.processor.interceptor.TraceInterceptor.process(Tr >>>>>> a >>>>>> c >>>>>> eI >>>>>> nterceptor.java:99) >>>>>> at >>>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorH >>>>>> e >>>>>> l >>>>>> pe >>>>>> r.java:70) >>>>>> at >>>>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(Dele >>>>>> g >>>>>> a >>>>>> te >>>>>> AsyncProcessor.java:98) >>>>>> at >>>>>> org.apache.camel.processor.DelegateAsyncProcessor.process(Delegate >>>>>> A >>>>>> s >>>>>> yn >>>>>> cProcessor.java:89) >>>>>> at >>>>>> org.apache.camel.management.InstrumentationProcessor.process(Instr >>>>>> u >>>>>> m >>>>>> en >>>>>> tationProcessor.java:68) >>>>>> at >>>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorH >>>>>> e >>>>>> l >>>>>> pe >>>>>> r.java:70) >>>>>> at >>>>>> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHand >>>>>> l >>>>>> e >>>>>> r( >>>>>> RedeliveryErrorHandler.java:290) >>>>>> at >>>>>> org.apache.camel.processor.RedeliveryErrorHandler.process(Redelive >>>>>> r >>>>>> y >>>>>> Er >>>>>> rorHandler.java:202) >>>>>> at >>>>>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java: >>>>>> 256) >>>>>> at >>>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorH >>>>>> e >>>>>> l >>>>>> pe >>>>>> r.java:70) >>>>>> at >>>>>> org.apache.camel.processor.Pipeline.process(Pipeline.java:143) >>>>>> at >>>>>> org.apache.camel.processor.Pipeline.process(Pipeline.java:78) >>>>>> at >>>>>> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkP >>>>>> r >>>>>> o >>>>>> ce >>>>>> ssor.java:99) >>>>>> at >>>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorH >>>>>> e >>>>>> l >>>>>> pe >>>>>> r.java:70) >>>>>> at >>>>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(Dele >>>>>> g >>>>>> a >>>>>> te >>>>>> AsyncProcessor.java:98) >>>>>> at >>>>>> org.apache.camel.processor.DelegateAsyncProcessor.process(Delegate >>>>>> A >>>>>> s >>>>>> yn >>>>>> cProcessor.java:89) >>>>>> at >>>>>> org.apache.camel.management.InstrumentationProcessor.process(Instr >>>>>> u >>>>>> m >>>>>> en >>>>>> tationProcessor.java:68) >>>>>> at >>>>>> org.apache.servicemix.camel.CamelProviderEndpoint$1.call(CamelProv >>>>>> i >>>>>> d >>>>>> er >>>>>> Endpoint.java:109) >>>>>> at >>>>>> org.apache.servicemix.camel.JbiBinding.runWithCamelContextClassLoa >>>>>> d >>>>>> e >>>>>> r( >>>>>> JbiBinding.java:116) >>>>>> at >>>>>> org.apache.servicemix.camel.CamelProviderEndpoint.handleActiveProv >>>>>> i >>>>>> d >>>>>> er >>>>>> Exchange(CamelProviderEndpoint.java:107) >>>>>> at >>>>>> org.apache.servicemix.camel.CamelProviderEndpoint.process(CamelPro >>>>>> v >>>>>> i >>>>>> de >>>>>> rEndpoint.java:85) >>>>>> at >>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBas >>>>>> e >>>>>> L >>>>>> if >>>>>> eCycle.java:651) >>>>>> at >>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(As >>>>>> y >>>>>> n >>>>>> cB >>>>>> aseLifeCycle.java:606) >>>>>> at >>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchangeInT >>>>>> x >>>>>> ( >>>>>> As >>>>>> yncBaseLifeCycle.java:501) >>>>>> at >>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle$2.run(AsyncBaseLif >>>>>> e >>>>>> C >>>>>> yc >>>>>> le.java:370) >>>>>> at >>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolE >>>>>> x >>>>>> e >>>>>> cu >>>>>> tor.java:886) >>>>>> at >>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor. >>>>>> java:908) >>>>>> at java.lang.Thread.run(Thread.java:680) >>>>>> >>>>>> Any other ideas? >>>>>> >>>>>> Thanks. >>>>>> --Scott >>>>>> >>>>>> -----Original Message----- >>>>>> From: Freeman Fang [mailto:[email protected]] >>>>>> Sent: Monday, January 17, 2011 7:08 PM >>>>>> To: [email protected] >>>>>> Subject: Re: Large(ish) message issue (CXFBC and Camel) >>>>>> >>>>>> >>>>>> On 2011-1-18, at 上午10:41, Scott Came wrote: >>>>>> >>>>>>> I am seeing some strange behavior when using Camel to route from >>>>>>> a JBI endpoint (cxfbc) to a file using the Camel file component. >>>>>>> >>>>>>> Here is the scenario. >>>>>>> >>>>>>> I have created a JBI CXFBC service unit with WSDL. I have also >>>>>>> created a Camel service unit, with a very simple route: it >>>>>>> routes from the CXFBC endpoint to a file with a route that looks like >>>>>>> this: >>>>>>> >>>>>>> <camelContext id="camel" xmlns="http://camel.apache.org/schema/ >>>>>>> spring"> >>>>>>> <route> >>>>>>> <from >>>>>>> uri="jbi:endpoint:http://it.ojp.gov/global/services/tsc-encounter >>>>>>> - r ou t er/RouterService/RouterServiceEndpoint >>>>>>> "/> >>>>>>> <to >>>>>>> uri="log:gov.ojp.it.TSCEncounterRouterLog?showBody=false"/> >>>>>>> <convertBodyTo type="java.lang.String"/> >>>>>>> <to uri="file:/Users/scott/Desktop/router-output"/> >>>>>>> </route> >>>>>>> </camelContext> >>>>>>> >>>>>>> I bundle these to SUs into an SA and deploy. Everything deploys fine. >>>>>>> >>>>>>> I then use SOAPUI to send test messages. >>>>>>> >>>>>>> If I send a very small message...say, no bigger than a couple >>>>>>> hundred bytes, to the RouterServiceEndpoint, everything works fine. >>>>>>> I see the log message in the log, and the file gets written to my >>>>>>> router-output directory. >>>>>>> >>>>>>> However, when I increase the message size beyond a certain point >>>>>>> (not sure exactly where it is...somewhere around 2000-3000 bytes) >>>>>>> I start getting messages like: >>>>>>> >>>>>>> Unexpected end of input block in start tag at [row,col {unknown- >>>>>>> source}]: [51,20] >>>>>>> >>>>>>> The underlying exception seems to be a >>>>>>> com.ctc.wstx.exc.WstcEOFException. >>>>>>> >>>>>>> If I try subsequent invocations of the service, I get a similar >>>>>>> error, though the referenced place in the stream is often a >>>>>>> little different (e.g., [51, 25] or [55, 10]). So it seems like >>>>>>> the parser is getting to a different place in the stream each time >>>>>>> before it fails. >>>>>>> >>>>>>> I have put TCPMon in the middle and verified that the entire >>>>>>> message is getting to the server, although the server side is not >>>>>>> closing the connection when the exception occurs. >>>>>>> >>>>>>> I am 100% sure the content being sent is valid XML. >>>>>>> >>>>>>> Interestingly, if I take out the<to> part of the route to the >>>>>>> file component, everything works fine...I get the simple log >>>>>>> message (note that I am not logging the body content), and the >>>>>>> connection closes in TCPMon. However, if I switch to logging the >>>>>>> body content (i.e., take off the ?showBody=false option), I get >>>>>>> similar errors as when I try to write out the file. >>>>>> This looks like a stream already get consumed issue for me, how >>>>>> about you just >>>>>> >>>>>> How about you just change your router like<camelContext id="camel" >>>>>> xmlns="http://camel.apache.org/schema/spring"> >>>>>> <route streamCache="true"> >>>>>> <from >>>>>> uri="jbi:endpoint:http://it.ojp.gov/global/services/tsc-encounter- >>>>>> r o ut er/RouterService/RouterServiceEndpoint >>>>>> "/> >>>>>> <to >>>>>> uri="log:gov.ojp.it.TSCEncounterRouterLog?showBody=false"/> >>>>>> <convertBodyTo type="java.lang.String"/> >>>>>> <to uri="file:/Users/scott/Desktop/router-output"/> >>>>>> </route> >>>>>> </camelContext> >>>>>> >>>>>> Freeman >>>>>> >>>>>>> I have tried taking out the<convertBodyTo...> element, but that >>>>>>> results in a different exception...something about no appropriate >>>>>>> converter being found. >>>>>>> >>>>>>> It would be somewhat difficult for me to attach a full example, >>>>>>> as the content of the large message is somewhat >>>>>>> sensitive/proprietary, but I could do that if I absolutely needed >>>>>>> to. I'm hoping there is some simple configuration setting I need >>>>>>> to tweak to handle bigger messages (though a 2K or 3K message is >>>>>>> by no means large...) >>>>>>> >>>>>>> Thanks for any help you can offer. >>>>>>> >>>>>>> --Scott >>>>>> >>>>>> >>>>>> -- >>>>>> Freeman Fang >>>>>> >>>>>> ------------------------ >>>>>> >>>>>> FuseSource: http://fusesource.com >>>>>> blog: http://freemanfang.blogspot.com >>>>>> twitter: http://twitter.com/freemanfang Apache >>>>>> Servicemix:http://servicemix.apache.org >>>>>> Apache Cxf: http://cxf.apache.org >>>>>> Apache Karaf: http://karaf.apache.org Apache Felix: >>>>>> http://felix.apache.org >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Claus Ibsen >>>>> ----------------- >>>>> FuseSource >>>>> Email: [email protected] >>>>> Web: http://fusesource.com >>>>> Twitter: davsclaus >>>>> Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: >>>>> http://www.manning.com/ibsen/ >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Claus Ibsen >>>> ----------------- >>>> FuseSource >>>> Email: [email protected] >>>> Web: http://fusesource.com >>>> Twitter: davsclaus >>>> Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: >>>> http://www.manning.com/ibsen/ >>>> >>> >>> >>> >>> -- >>> Claus Ibsen >>> ----------------- >>> FuseSource >>> Email: [email protected] >>> Web: http://fusesource.com >>> Twitter: davsclaus >>> Blog: http://davsclaus.blogspot.com/ >>> Author of Camel in Action: http://www.manning.com/ibsen/ >>> >> >> >> -- >> Willem >> ---------------------------------- >> FuseSource >> Web: http://www.fusesource.com >> Blog: http://willemjiang.blogspot.com (English) >> http://jnn.javaeye.com (Chinese) >> Twitter: willemjiang >> >> > > > > -- > Claus Ibsen > ----------------- > FuseSource > Email: [email protected] > Web: http://fusesource.com > Twitter: davsclaus > Blog: http://davsclaus.blogspot.com/ > Author of Camel in Action: http://www.manning.com/ibsen/ > > -- Claus Ibsen ----------------- FuseSource Email: [email protected] Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/
