SM-809 has been checked in.
This defines a new flag on the EIP WireTap
to allow forwarding properties from the in message
to the out / fault message.

See

              <eip:xpath-splitter service="test:aggregatorSplitter"
endpoint="endpoint"
                                 xpath="/*/*" namespaceContext="#nsContext">
               <eip:target>
                 <eip:exchange-target service="test:pipeline-aggregator" />

               </eip:target>
             </eip:xpath-splitter>

             <eip:pipeline service="test:pipeline-aggregator"
endpoint="endpoint">
               <eip:transformer>
                 <eip:exchange-target service="test:wiretap-echo" />
               </eip:transformer>
               <eip:target>
                 <eip:exchange-target service="test:aggregator" />

               </eip:target>
             </eip:pipeline>

             <eip:wire-tap service="test:wiretap-echo" endpoint="endpoint"
                           copyProperties="true">
               <eip:target>
                 <eip:exchange-target service="test:echo" />
               </eip:target>
             </eip:wire-tap>

             <eip:split-aggregator service="test:aggregator"
endpoint="endpoint">
               <eip:target>
                 <eip:exchange-target service="test:trace5" />
               </eip:target>
             </eip:split-aggregator>


This will work even if the echo service does not forward
the needed properties.

On 1/10/07, Guillaume Nodet <[EMAIL PROTECTED]> wrote:
I've just test the problem using an EIP pattern between
the splitter and the aggregator, and it works fine, as soon
as the target component correctly forward the needed
properties (I used the o.a.s.components.util.EchoComponent).

The problem is that not all components handle that.
The jsr181, jms, http ... won't work afaik.  There is already
a JIRA for the jsr181 component which could be extended to other
components.

Another way is to implement a kind of wire tap, which would
act as a transparent proxy and copy the needed properties.

I think both should be done.

On 1/10/07, Anne Noseda <[EMAIL PROTECTED]> wrote:
> Hy,
>
> I have a similar problem but I think that the pipeline eip service
> engine looses the correlation ID when it calls an extern WS.
>
> Here the schema of my work :
> (see attachment)
>
> The exchanges 1 and 2 raise an error "Could not retrieve correlation
> id for incoming exchange" in the aggregator eip service engine but the
> exchange number 3 is correctly processed by the aggregator. I think
> the saxon service engine is not implicated.
>
> Here my error stack trace :
>
> Exchange 3 ok :
>
> DEBUG - DeliveryChannelImpl            - Received: InOnly[
>   id: ID:POC07-1718-1168419261170-2:29
>   status: Active
>   role: provider
>   service: {http://saxon.test.etnic.be}seAggregator
>   endpoint: endpoint
>   in: <?xml version="1.0" encoding="UTF-8"?> ***
> ]
> DEBUG - DeliveryChannelImpl            - Processing inbound exchange: InOnly[
>   id: ID:POC07-1718-1168419261170-2:29
>   status: Done
>   role: consumer
>   service: {http://saxon.test.etnic.be}seAggregator
>   endpoint: endpoint
>   in: <?xml version="1.0" encoding="UTF-8"?> ***
> ]
>
> Exchanges 1 et 2 : KO :
>
> ERROR - EIPComponent                   - Error processing exchange InOnly[
>   id: ID:POC07-1718-1168419261170-2:33
>   status: Active
>   role: provider
>   service: {http://saxon.test.etnic.be}seAggregator
>   endpoint: endpoint
>   in: <?xml version="1.0" encoding="UTF-8"?> ***
> ]
> java.lang.IllegalArgumentException: Could not retrieve correlation id
> for incoming exchange
>         at 
org.apache.servicemix.eip.support.AbstractAggregator.process(AbstractAggregator.java:138)
>         at 
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
>         at 
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
>         at 
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>         at 
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>         at 
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>         at 
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>         at 
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>         at 
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665
>
>         at 
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>         at java.lang.Thread.run(Thread.java:595)
>
> ERROR - EIPComponent                   - Error processing exchange InOnly[
>   id: ID:POC07-1718-1168419261170-2:34
>   status: Active
>   role: provider
>   service: {http://saxon.test.etnic.be}seAggregator
>   endpoint: endpoint
>   in: <?xml version="1.0" encoding="UTF-8"?> ***
> ]
> java.lang.IllegalArgumentException: Could not retrieve correlation id
> for incoming exchange
>         at 
org.apache.servicemix.eip.support.AbstractAggregator.process(AbstractAggregator.java:138)
>         at 
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
>         at 
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
>         at 
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>         at 
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>         at 
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>         at 
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>         at 
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>         at 
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>
>         at 
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>         at java.lang.Thread.run(Thread.java:595)
>
>
>
> 2007/1/10, sebastien <[EMAIL PROTECTED]>:
> >
> > Hi,
> >
> > I tried with servicemix-saxon SE.
> > Now, I can see in the log file that the correlation ID is sent to the
> > aggregator component.
> > But I got still the same error :
> > http://www.nabble.com/file/5559/servicemix.log servicemix.log > incoming
> > exchange"
> >
> > -> I put the servicemix log file in attachement
> >
> > Thanks for your help
> >
> > Sebastien
> >
> >
> >
> >
> >
> > gnodet wrote:
> > >
> > > Have you tried with servicemix-saxon SE instead of the
> > > lightweight component ?
> > >
> > > On 1/9/07, sebastien <[EMAIL PROTECTED]> wrote:
> > >>
> > >> hi all,
> > >>
> > >> I use the followings components :
> > >>
> > >>                                                   -> XSLT (x) -> HTTP
> > >> (pipeline)
> > >> HTTP -> Splitter -> Recipient List
> > >> -> Aggregator -> JMS
> > >>                                                   -> XSLT (x) -> HTTP
> > >> (pipeline)
> > >>
> > >> I can see in the log file that XSLT component does not send the
> > >> correlation
> > >> ID property.
> > >> It causes the following error in the Aggregator component :
> > >> "java.lang.IllegalArgumentException: Could not retrieve correlation id
> > >> for
> > >> incoming exchange"
> > >>
> > >> Have you got an idea ?
> > >>
> > >> Tanks for your help.
> > >>
> > >> Sebastien
> > >>
> > >> I tried with ServiceMix 3.0 and ServiceMix 3.1 version without any
> > >> success.
> > >> --
> > >> View this message in context:
> > >> 
http://www.nabble.com/Correlation-ID-lost-after-XSLT-component-tf2945039s12049.html#a8235443
> > >> Sent from the ServiceMix - User mailing list archive at Nabble.com.
> > >>
> > >>
> > >
> > >
> > > --
> > > Cheers,
> > > Guillaume Nodet
> > >
> > >
> >
> > --
> > View this message in context: 
http://www.nabble.com/Correlation-ID-lost-after-XSLT-component-tf2945039s12049.html#a8253993
> > Sent from the ServiceMix - User mailing list archive at Nabble.com.
> >
> >
>
>


--
Cheers,
Guillaume Nodet



--
Cheers,
Guillaume Nodet

Reply via email to