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?

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/

Reply via email to