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.java
>>> :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(Fragm
>>> en
>>> tStreamReader.java:68)
>>>      at
>>> org.apache.servicemix.cxfbc.interceptors.StaxJbiWrapper.next(StaxJbi
>>> 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(MessageSupport
>>> .j
>>> ava:103)
>>>      at
>>> org.apache.camel.processor.ConvertBodyProcessor.process(ConvertBodyP
>>> ro
>>> cessor.java:57)
>>>      at
>>> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$Processo
>>> rT
>>> oAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50)
>>>      at
>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHel
>>> pe
>>> r.java:70)
>>>      at
>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(Delega
>>> te
>>> AsyncProcessor.java:98)
>>>      at
>>> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAs
>>> yn
>>> cProcessor.java:89)
>>>      at
>>> org.apache.camel.management.InstrumentationProcessor.process(Instrum
>>> en
>>> tationProcessor.java:68)
>>>      at
>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHel
>>> pe
>>> r.java:70)
>>>      at
>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(Delega
>>> te
>>> AsyncProcessor.java:98)
>>>      at
>>> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAs
>>> yn
>>> cProcessor.java:89)
>>>      at
>>> org.apache.camel.processor.interceptor.TraceInterceptor.process(Trac
>>> eI
>>> nterceptor.java:99)
>>>      at
>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHel
>>> pe
>>> r.java:70)
>>>      at
>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(Delega
>>> te
>>> AsyncProcessor.java:98)
>>>      at
>>> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAs
>>> yn
>>> cProcessor.java:89)
>>>      at
>>> org.apache.camel.management.InstrumentationProcessor.process(Instrum
>>> en
>>> tationProcessor.java:68)
>>>      at
>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHel
>>> pe
>>> r.java:70)
>>>      at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandle
>>> r(
>>> RedeliveryErrorHandler.java:290)
>>>      at
>>> org.apache.camel.processor.RedeliveryErrorHandler.process(Redelivery
>>> Er
>>> rorHandler.java:202)
>>>      at
>>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:
>>> 256)
>>>      at
>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHel
>>> 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(UnitOfWorkPro
>>> ce
>>> ssor.java:99)
>>>      at
>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHel
>>> pe
>>> r.java:70)
>>>      at
>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(Delega
>>> te
>>> AsyncProcessor.java:98)
>>>      at
>>> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAs
>>> yn
>>> cProcessor.java:89)
>>>      at
>>> org.apache.camel.management.InstrumentationProcessor.process(Instrum
>>> en
>>> tationProcessor.java:68)
>>>      at
>>> org.apache.servicemix.camel.CamelProviderEndpoint$1.call(CamelProvid
>>> er
>>> Endpoint.java:109)
>>>      at
>>> org.apache.servicemix.camel.JbiBinding.runWithCamelContextClassLoade
>>> r(
>>> JbiBinding.java:116)
>>>      at
>>> org.apache.servicemix.camel.CamelProviderEndpoint.handleActiveProvid
>>> er
>>> Exchange(CamelProviderEndpoint.java:107)
>>>      at
>>> org.apache.servicemix.camel.CamelProviderEndpoint.process(CamelProvi
>>> de
>>> rEndpoint.java:85)
>>>      at
>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseL
>>> if
>>> eCycle.java:651)
>>>      at
>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(Asyn
>>> cB
>>> aseLifeCycle.java:606)
>>>      at
>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchangeInTx(
>>> As
>>> yncBaseLifeCycle.java:501)
>>>      at
>>> org.apache.servicemix.common.AsyncBaseLifeCycle$2.run(AsyncBaseLifeC
>>> yc
>>> le.java:370)
>>>      at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExe
>>> 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-ro
>>> 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/

Reply via email to