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

-----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.jav
>>>> 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(Frag
>>>> m
>>>> en
>>>> tStreamReader.java:68)
>>>>       at
>>>> org.apache.servicemix.cxfbc.interceptors.StaxJbiWrapper.next(StaxJb
>>>> 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(MessageSuppor
>>>> t
>>>> .j
>>>> ava:103)
>>>>       at
>>>> org.apache.camel.processor.ConvertBodyProcessor.process(ConvertBody
>>>> P
>>>> ro
>>>> cessor.java:57)
>>>>       at
>>>> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$Process
>>>> o
>>>> rT
>>>> oAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50)
>>>>       at
>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHe
>>>> l
>>>> pe
>>>> r.java:70)
>>>>       at
>>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(Deleg
>>>> a
>>>> te
>>>> AsyncProcessor.java:98)
>>>>       at
>>>> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateA
>>>> s
>>>> yn
>>>> cProcessor.java:89)
>>>>       at
>>>> org.apache.camel.management.InstrumentationProcessor.process(Instru
>>>> m
>>>> en
>>>> tationProcessor.java:68)
>>>>       at
>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHe
>>>> l
>>>> pe
>>>> r.java:70)
>>>>       at
>>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(Deleg
>>>> a
>>>> te
>>>> AsyncProcessor.java:98)
>>>>       at
>>>> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateA
>>>> s
>>>> yn
>>>> cProcessor.java:89)
>>>>       at
>>>> org.apache.camel.processor.interceptor.TraceInterceptor.process(Tra
>>>> c
>>>> eI
>>>> nterceptor.java:99)
>>>>       at
>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHe
>>>> l
>>>> pe
>>>> r.java:70)
>>>>       at
>>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(Deleg
>>>> a
>>>> te
>>>> AsyncProcessor.java:98)
>>>>       at
>>>> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateA
>>>> s
>>>> yn
>>>> cProcessor.java:89)
>>>>       at
>>>> org.apache.camel.management.InstrumentationProcessor.process(Instru
>>>> m
>>>> en
>>>> tationProcessor.java:68)
>>>>       at
>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHe
>>>> l
>>>> pe
>>>> r.java:70)
>>>>       at
>>>> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandl
>>>> e
>>>> r(
>>>> RedeliveryErrorHandler.java:290)
>>>>       at
>>>> org.apache.camel.processor.RedeliveryErrorHandler.process(Redeliver
>>>> y
>>>> Er
>>>> rorHandler.java:202)
>>>>       at
>>>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:
>>>> 256)
>>>>       at
>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHe
>>>> 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(UnitOfWorkPr
>>>> o
>>>> ce
>>>> ssor.java:99)
>>>>       at
>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHe
>>>> l
>>>> pe
>>>> r.java:70)
>>>>       at
>>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(Deleg
>>>> a
>>>> te
>>>> AsyncProcessor.java:98)
>>>>       at
>>>> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateA
>>>> s
>>>> yn
>>>> cProcessor.java:89)
>>>>       at
>>>> org.apache.camel.management.InstrumentationProcessor.process(Instru
>>>> m
>>>> en
>>>> tationProcessor.java:68)
>>>>       at
>>>> org.apache.servicemix.camel.CamelProviderEndpoint$1.call(CamelProvi
>>>> d
>>>> er
>>>> Endpoint.java:109)
>>>>       at
>>>> org.apache.servicemix.camel.JbiBinding.runWithCamelContextClassLoad
>>>> e
>>>> r(
>>>> JbiBinding.java:116)
>>>>       at
>>>> org.apache.servicemix.camel.CamelProviderEndpoint.handleActiveProvi
>>>> d
>>>> er
>>>> Exchange(CamelProviderEndpoint.java:107)
>>>>       at
>>>> org.apache.servicemix.camel.CamelProviderEndpoint.process(CamelProv
>>>> i
>>>> de
>>>> rEndpoint.java:85)
>>>>       at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBase
>>>> L
>>>> if
>>>> eCycle.java:651)
>>>>       at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(Asy
>>>> n
>>>> cB
>>>> aseLifeCycle.java:606)
>>>>       at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchangeInTx
>>>> (
>>>> As
>>>> yncBaseLifeCycle.java:501)
>>>>       at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle$2.run(AsyncBaseLife
>>>> C
>>>> yc
>>>> le.java:370)
>>>>       at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolEx
>>>> 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

Reply via email to