I am pretty sure. Here is the snippet from MinaPayloadHelper class (Camel 1.4):
public static void setOut(Exchange exchange, Object payload) { if (payload instanceof MinaPayloadHolder) { MinaPayloadHolder.unmarshal(exchange, (MinaPayloadHolder) payload); } else { // normal transfer using the body only exchange.getOut().setBody(payload); } } This method is called from MinaProducer As you can see only body is set. No headers at all. Claus Ibsen wrote: > > Btw: I actually do think that headers is preserved when you use camel-mina > to communicate to a remote server. > > I can't see why its not like this in Camel 1.4? > > It only sets the response body from the remote server, on the existing > original exchange. So any existing headers should still be there. > > Are you sure they are lost? > > > Med venlig hilsen > > Claus Ibsen > ...................................... > Silverbullet > Skovsgårdsvænget 21 > 8362 Hørning > Tlf. +45 2962 7576 > Web: www.silverbullet.dk > > -----Original Message----- > From: dkozic [mailto:[EMAIL PROTECTED] > Sent: 26. august 2008 10:44 > To: camel-user@activemq.apache.org > Subject: RE: mina tcp client problem > > > I now about transferExchange option. That is not what I want. I do not > want > to send headers over the wire to remote server, only body. I want headers > accessable after receiving response from server. Just like in http > component. > > > > Claus Ibsen wrote: >> >> Hi >> >> If you want to send the payload with both body + headers then you can >> send >> it as plain exchange using the transferExchange=true option. Its already >> in 1.4 >> >> See the wiki documentation of the component: >> http://activemq.apache.org/camel/mina.html >> >> And check its unit test: >> https://svn.apache.org/repos/asf/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java >> >> >> >> Med venlig hilsen >> >> Claus Ibsen >> ...................................... >> Silverbullet >> Skovsgårdsvænget 21 >> 8362 Hørning >> Tlf. +45 2962 7576 >> Web: www.silverbullet.dk >> -----Original Message----- >> From: dkozic [mailto:[EMAIL PROTECTED] >> Sent: 26. august 2008 08:41 >> To: camel-user@activemq.apache.org >> Subject: RE: mina tcp client problem >> >> >> Thanks for quick fix. >> >> I have another problem with mina component. >> There is no headers in message after mina component. Is it intentional or >> not (Because of InOut MEP)? >> >> With your fix, that problem will not appear. Here is snippet of code >> (after >> fix) from MinaProducer class >> >> if (ExchangeHelper.isOutCapable(exchange)) { >> MinaPayloadHelper.setOut(exchange, handler.getMessage()); >> } else { >> MinaPayloadHelper.setIn(exchange, handler.getMessage()); >> } >> In case of setting out message, only body is set. >> In case of setting in message all headers are preserved. >> >> Is there workaround in Camel 1.4 for this problem or I should switch to >> Camel 1.5? >> Maybe I should try to copy In message to Out message in custom processor >> before mina? Is it good approach? >> >> Thanks in advance >> >> >> >> >> Claus Ibsen wrote: >>> >>> Hi >>> >>> I have fixed camel-mina to be exchange pattern (MEP) agnostic and thus >>> support your use-case out-of-the-box in Camel 1.5. So at that time you >>> don't need to change the MEP from InOnly to InOut to get the response >>> from >>> mina. >>> >>> Also the sync option is now default = true. 99% will call a remote >>> socket >>> server and wait for a response. >>> >>> CAMEL-847 was the ticket for this change. >>> >>> Med venlig hilsen >>> >>> Claus Ibsen >>> ...................................... >>> Silverbullet >>> Skovsgårdsvænget 21 >>> 8362 Hørning >>> Tlf. +45 2962 7576 >>> Web: www.silverbullet.dk >>> >>> -----Original Message----- >>> From: dkozic [mailto:[EMAIL PROTECTED] >>> Sent: 25. august 2008 13:08 >>> To: camel-user@activemq.apache.org >>> Subject: RE: mina tcp client problem >>> >>> >>> It works now. Thanks a lot. What is purpose of ExchangePattern if it can >>> be >>> changed in any moment? >>> >>> >>> Claus Ibsen wrote: >>>> >>>> Hi >>>> >>>> Ah you must change the exchange pattern to InOut before you send it to >>>> Mina so it can set the response on the out message body. >>>> >>>> I guess we might need some smarter exchange pattern in Camel. Something >>>> to >>>> improve in Camel 2.0!!! >>>> >>>> You can change the exchange pattern in Camel in your processor code >>>> (eg. >>>> debugProcessor) by casting the exchange to DefaultExchange and call the >>>> setExchangePattern(InOut) to change it from InOnly to InOut >>>> >>>> I guess you have a bad combination in Camel that hasn't an elegant and >>>> beautiful solution. >>>> >>>> >>>> >>>> Med venlig hilsen >>>> >>>> Claus Ibsen >>>> ...................................... >>>> Silverbullet >>>> Skovsgårdsvænget 21 >>>> 8362 Hørning >>>> Tlf. +45 2962 7576 >>>> Web: www.silverbullet.dk >>>> -----Original Message----- >>>> From: dkozic [mailto:[EMAIL PROTECTED] >>>> Sent: 25. august 2008 12:14 >>>> To: camel-user@activemq.apache.org >>>> Subject: RE: mina tcp client problem >>>> >>>> >>>> I still need help regarding this problem. >>>> >>>> I have already tried with sync option, with no results. >>>> >>>> Here is my last route configuration: >>>> >>>> from("timer://whcTimer?period=20000&delay=10000") >>>> .setBody(constant("0001134765 C 65405818")) >>>> .processRef("debugProcessor").to("seda:whcLog") >>>> .to("mina:tcp://172.18.3.145:6562?textline=true&minaLogger=true&sync=true") >>>> .processRef("debugProcessor") >>>> .to("seda:whcLog"); >>>> >>>> from("seda:whcLog").to("log:asw.someLogger?level=DEBUG&showHeaders=true"); >>>> >>>> I have switch on tracing and output is following: >>>> >>>> 2008-08-25 12:06:16,250 [timer://whcTimer?period=20000&delay=10000] >>>> INFO >>>> org.apache.camel.processor.interceptor.TraceInterceptor:88 - >>>> ID-drasko/3530-1219658769328/2-0 -> interceptor1 >>>> Interceptor[Delegate(Pipeline[DeadLetterChannel[Delegate(TraceInterceptor[SetBody[ >>>> Expression[null]]]), >>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error], >>>> RedeliveryPolicy[maximumRedeliveries=6]], >>>> DeadLetterChannel[Delegate(TraceInterceptor[Processor[ref: >>>> debugProcessor]]), >>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error], >>>> RedeliveryPolicy[maximumRedeliveries=6]], >>>> DeadLetterChannel[Delegate(TraceInterceptor[To[seda:whcLog]]), >>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error], >>>> RedeliveryPolicy[maximumRedeliveries=6]], >>>> DeadLetterChannel[Delegate(TraceInterceptor[To[mina:tcp://172.18.3.145:6562?textline=true&minaLogger=true&sync=true]]), >>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error], >>>> RedeliveryPolicy[maximumRedeliveries=6]], >>>> DeadLetterChannel[Delegate(TraceInterceptor[Processor[ref: >>>> debugProcessor]]), >>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error], >>>> RedeliveryPolicy[maximumRedeliveries=6]], >>>> DeadLetterChannel[Delegate(TraceInterceptor[To[seda:whcLog]]), >>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error], >>>> RedeliveryPolicy[maximumRedeliveries=6]]])] InOnly >>>> Properties:{org.apache.camel.timer.name=whcTimer, >>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null} >>>> Headers:{} Body:Message: null >>>> 2008-08-25 12:06:16,296 [timer://whcTimer?period=20000&delay=10000] >>>> INFO >>>> org.apache.camel.processor.interceptor.TraceInterceptor:88 - >>>> ID-drasko/3530-1219658769328/2-0 -> setBody1 SetBody[ Expression[null]] >>>> InOnly Properties:{CamelCauseException=null, >>>> org.apache.camel.timer.name=whcTimer, >>>> org.apache.camel.timer.period=20000, >>>> org.apache.camel.timer.time=null} Headers:{} Body:Message: null >>>> 2008-08-25 12:06:16,296 [timer://whcTimer?period=20000&delay=10000] >>>> INFO >>>> org.apache.camel.processor.interceptor.TraceInterceptor:88 - >>>> ID-drasko/3530-1219658769328/2-0 -> processor1 Processor[ref: >>>> debugProcessor] InOnly Properties:{CamelCauseException=null, >>>> org.apache.camel.timer.name=whcTimer, >>>> org.apache.camel.timer.period=20000, >>>> org.apache.camel.timer.time=null} Headers:{} Body:0001134765 C 65405818 >>>> 2008-08-25 12:06:16,296 [timer://whcTimer?period=20000&delay=10000] >>>> DEBUG >>>> asw.camel.processor.DebugProcessor:15 - inMessage: Message: 0001134765 >>>> C >>>> 65405818 >>>> 2008-08-25 12:06:16,296 [timer://whcTimer?period=20000&delay=10000] >>>> DEBUG >>>> asw.camel.processor.DebugProcessor:18 - inMessageBody: 0001134765 C >>>> 65405818 >>>> 2008-08-25 12:06:16,296 [timer://whcTimer?period=20000&delay=10000] >>>> INFO >>>> org.apache.camel.processor.interceptor.TraceInterceptor:88 - >>>> ID-drasko/3530-1219658769328/2-0 -> to1 To[seda:whcLog] InOnly >>>> Properties:{CamelCauseException=null, >>>> org.apache.camel.timer.name=whcTimer, >>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null} >>>> Headers:{} Body:0001134765 C 65405818 >>>> 2008-08-25 12:06:16,296 [timer://whcTimer?period=20000&delay=10000] >>>> INFO >>>> org.apache.camel.processor.interceptor.TraceInterceptor:88 - >>>> ID-drasko/3530-1219658769328/2-0 -> to2 >>>> To[mina:tcp://172.18.3.145:6562?textline=true&minaLogger=true&sync=true] >>>> InOnly Properties:{CamelCauseException=null, >>>> org.apache.camel.timer.name=whcTimer, >>>> org.apache.camel.timer.period=20000, >>>> org.apache.camel.timer.time=null} Headers:{} Body:0001134765 C 65405818 >>>> 2008-08-25 12:06:16,296 [seda:whcLog thread:1] INFO >>>> org.apache.camel.processor.interceptor.TraceInterceptor:88 - >>>> ID-drasko/3530-1219658769328/2-0 -> interceptor2 >>>> Interceptor[Delegate(DeadLetterChannel[Delegate(TraceInterceptor[To[log:asw.someLogger?level=DEBUG&showHeaders=true]]), >>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error], >>>> RedeliveryPolicy[maximumRedeliveries=6]])] InOnly >>>> Properties:{CamelCauseException=null, >>>> org.apache.camel.timer.name=whcTimer, >>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null} >>>> Headers:{} Body:0001134765 C 65405818 >>>> 2008-08-25 12:06:16,312 [seda:whcLog thread:1] INFO >>>> org.apache.camel.processor.interceptor.TraceInterceptor:88 - >>>> ID-drasko/3530-1219658769328/2-0 -> to4 >>>> To[log:asw.someLogger?level=DEBUG&showHeaders=true] InOnly >>>> Properties:{CamelCauseException=null, >>>> org.apache.camel.timer.name=whcTimer, >>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null} >>>> Headers:{} Body:0001134765 C 65405818 >>>> 2008-08-25 12:06:16,312 [seda:whcLog thread:1] DEBUG asw.someLogger:73 >>>> - >>>> Exchange[Headers:{}, BodyType:String, Body:0001134765 C 65405818] >>>> 2008-08-25 12:06:16,312 [timer://whcTimer?period=20000&delay=10000] >>>> DEBUG >>>> org.apache.camel.component.mina.MinaProducer:83 - Writing body: >>>> 0001134765 >>>> C 65405818 >>>> 2008-08-25 12:06:16,328 [timer://whcTimer?period=20000&delay=10000] >>>> INFO >>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69 - >>>> [/172.18.3.145:6562] WRITE: 0001134765 C 65405818 >>>> 2008-08-25 12:06:16,343 [timer://whcTimer?period=20000&delay=10000] >>>> INFO >>>> org.apache.camel.processor.interceptor.TraceInterceptor:88 - >>>> ID-drasko/3530-1219658769328/2-0 -> processor2 Processor[ref: >>>> debugProcessor] InOnly Properties:{CamelCauseException=null, >>>> org.apache.camel.timer.name=whcTimer, >>>> org.apache.camel.timer.period=20000, >>>> org.apache.camel.timer.time=null} Headers:{} Body:0001134765 C 65405818 >>>> 2008-08-25 12:06:16,343 [timer://whcTimer?period=20000&delay=10000] >>>> DEBUG >>>> asw.camel.processor.DebugProcessor:15 - inMessage: Message: 0001134765 >>>> C >>>> 65405818 >>>> 2008-08-25 12:06:16,343 [timer://whcTimer?period=20000&delay=10000] >>>> DEBUG >>>> asw.camel.processor.DebugProcessor:18 - inMessageBody: 0001134765 C >>>> 65405818 >>>> 2008-08-25 12:06:16,343 [timer://whcTimer?period=20000&delay=10000] >>>> INFO >>>> org.apache.camel.processor.interceptor.TraceInterceptor:88 - >>>> ID-drasko/3530-1219658769328/2-0 -> to3 To[seda:whcLog] InOnly >>>> Properties:{CamelCauseException=null, >>>> org.apache.camel.timer.name=whcTimer, >>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null} >>>> Headers:{} Body:0001134765 C 65405818 >>>> 2008-08-25 12:06:16,343 [seda:whcLog thread:1] INFO >>>> org.apache.camel.processor.interceptor.TraceInterceptor:88 - >>>> ID-drasko/3530-1219658769328/2-0 -> interceptor2 >>>> Interceptor[Delegate(DeadLetterChannel[Delegate(TraceInterceptor[To[log:asw.someLogger?level=DEBUG&showHeaders=true]]), >>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error], >>>> RedeliveryPolicy[maximumRedeliveries=6]])] InOnly >>>> Properties:{CamelCauseException=null, >>>> org.apache.camel.timer.name=whcTimer, >>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null} >>>> Headers:{} Body:0001134765 C 65405818 >>>> 2008-08-25 12:06:16,343 [seda:whcLog thread:1] INFO >>>> org.apache.camel.processor.interceptor.TraceInterceptor:88 - >>>> ID-drasko/3530-1219658769328/2-0 -> to4 >>>> To[log:asw.someLogger?level=DEBUG&showHeaders=true] InOnly >>>> Properties:{CamelCauseException=null, >>>> org.apache.camel.timer.name=whcTimer, >>>> org.apache.camel.timer.period=20000, org.apache.camel.timer.time=null} >>>> Headers:{} Body:0001134765 C 65405818 >>>> 2008-08-25 12:06:16,343 [seda:whcLog thread:1] DEBUG asw.someLogger:73 >>>> - >>>> Exchange[Headers:{}, BodyType:String, Body:0001134765 C 65405818] >>>> 2008-08-25 12:06:16,343 [AnonymousIoService-2] INFO >>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69 - >>>> [/172.18.3.145:6562] SENT: 0001134765 C 65405818 >>>> 2008-08-25 12:06:16,375 [AnonymousIoService-3] INFO >>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69 - >>>> [/172.18.3.145:6562] RECEIVED: 00 14765 >>>> 2008-08-25 12:06:16,390 [AnonymousIoService-3] DEBUG >>>> org.apache.camel.component.mina.MinaProducer:166 - Message received: >>>> 00 >>>> 14765 >>>> 2008-08-25 12:06:16,687 [AnonymousIoService-4] INFO >>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69 - >>>> [/172.18.3.145:6562] RECEIVED: 00 904765 ID: 65405818 ERROR: 300021 - >>>> Subscriber record was not created: subscriber already exists >>>> 2008-08-25 12:06:16,687 [AnonymousIoService-4] DEBUG >>>> org.apache.camel.component.mina.MinaProducer:166 - Message received: >>>> 00 >>>> 904765 ID: 65405818 ERROR: 300021 - Subscriber record was not created: >>>> subscriber already exists >>>> >>>> As you can see, remote server is contacted and correct response is >>>> received, >>>> but that response is not in message body after mina component. >>>> The message is InOnly (I suppose because of timer component). That is >>>> the >>>> difference. Example in documentation is InOut (I think so). >>>> >>>> As I said before, I am expecting behavior similar to http component. >>>> >>>> Please help. >>>> >>>> >>>> >>>> >>>> Claus Ibsen wrote: >>>>> >>>>> Hi >>>>> >>>>> You need to use the sync=true option for the mina component to >>>>> instruct >>>>> it >>>>> to be in synchronous mode and wait for a response. >>>>> >>>>> See the mina documentation and read about this option. >>>>> http://activemq.apache.org/camel/mina.html >>>>> >>>>> You use-case is documented there with a sample using textline and >>>>> sync=true. >>>>> >>>>> >>>>> Med venlig hilsen >>>>> >>>>> Claus Ibsen >>>>> ...................................... >>>>> Silverbullet >>>>> Skovsgårdsvænget 21 >>>>> 8362 Hørning >>>>> Tlf. +45 2962 7576 >>>>> Web: www.silverbullet.dk >>>>> >>>>> -----Original Message----- >>>>> From: dkozic [mailto:[EMAIL PROTECTED] >>>>> Sent: 22. august 2008 13:51 >>>>> To: camel-user@activemq.apache.org >>>>> Subject: mina tcp client problem >>>>> >>>>> >>>>> Hi, >>>>> >>>>> I would like to make route that will send text line to remote tcp >>>>> host:port, >>>>> read response and proceed with that response in body further in route. >>>>> I >>>>> have already make something similar with >>>>> >>>>> I tried with following route: >>>>> >>>>> from("timer://whcTimer?period=20000&delay=10000") >>>>> .setBody(constant("0001134765 C 65405818")) >>>>> .processRef("systemOutProcessor").processRef("debugProcessor") >>>>> .to("seda:whcLog") >>>>> .to("mina:tcp://172.18.3.145:6562?textline=true&minaLogger=true") >>>>> .processRef("systemOutProcessor") >>>>> .processRef("debugProcessor").to("seda:whcLog"); >>>>> >>>>> from("seda:whcLog").to("log:asw.someLogger?level=DEBUG&showHeaders=true"); >>>>> >>>>> The log output is: >>>>> >>>>> 2008-08-22 13:32:57,640 [timer://whcTimer?period=20000&delay=10000] >>>>> DEBUG >>>>> asw.camel.processor.DebugProcessor:15 - inMessage: Message: >>>>> 0001134765 >>>>> C >>>>> 65405818 >>>>> 2008-08-22 13:32:57,640 [timer://whcTimer?period=20000&delay=10000] >>>>> DEBUG >>>>> asw.camel.processor.DebugProcessor:18 - inMessageBody: 0001134765 C >>>>> 65405818 >>>>> 2008-08-22 13:32:57,640 [seda:whcLog thread:1] DEBUG asw.someLogger:73 >>>>> - >>>>> Exchange[Headers:{}, BodyType:String, Body:0001134765 C 65405818] >>>>> 2008-08-22 13:32:57,656 [timer://whcTimer?period=20000&delay=10000] >>>>> INFO >>>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69 - >>>>> [/172.18.3.145:6562] WRITE: 0001134765 C 65405818 >>>>> Entered SystemOutProcessor. >>>>> 2008-08-22 13:32:57,671 [timer://whcTimer?period=20000&delay=10000] >>>>> DEBUG >>>>> asw.camel.processor.DebugProcessor:15 - inMessage: Message: >>>>> 0001134765 >>>>> C >>>>> 65405818 >>>>> 2008-08-22 13:32:57,671 [timer://whcTimer?period=20000&delay=10000] >>>>> DEBUG >>>>> asw.camel.processor.DebugProcessor:18 - inMessageBody: 0001134765 C >>>>> 65405818 >>>>> 2008-08-22 13:32:57,671 [seda:whcLog thread:1] DEBUG asw.someLogger:73 >>>>> - >>>>> Exchange[Headers:{}, BodyType:String, Body:0001134765 C 65405818] >>>>> 2008-08-22 13:32:57,671 [AnonymousIoService-2] INFO >>>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69 - >>>>> [/172.18.3.145:6562] SENT: 0001134765 C 65405818 >>>>> 2008-08-22 13:32:57,718 [AnonymousIoService-3] INFO >>>>> org.apache.camel.component.mina.MinaProducer$ResponseHandler:69 - >>>>> [/172.18.3.145:6562] RECEIVED: 00 904765 ID: 65405818 ERROR: 300021 - >>>>> Subscriber record was not created: subscriber already exists >>>>> >>>>> From the log you can see that mina does tcp send and receive data. >>>>> But, >>>>> after mina the in message body is same as before. >>>>> >>>>> How to access response from remote server? >>>>> As I said, I expected behavior like in http component. I have tried >>>>> with >>>>> sync = "true" with no success. >>>>> >>>>> Platform: Camel 1.4, jdk1.5.0_10, Eclipse 3.3, Tomcat 5.5.17, Windows >>>>> XP >>>>> SP1 >>>>> >>>>> Thanks in advance >>>>> -- >>>>> View this message in context: >>>>> http://www.nabble.com/mina-tcp-client-problem-tp19105767s22882p19105767.html >>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>> >>>>> >>>>> >>>> >>>> -- >>>> View this message in context: >>>> http://www.nabble.com/mina-tcp-client-problem-tp19105767s22882p19141128.html >>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>> >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://www.nabble.com/mina-tcp-client-problem-tp19105767s22882p19141811.html >>> Sent from the Camel - Users mailing list archive at Nabble.com. >>> >>> >>> >> >> -- >> View this message in context: >> http://www.nabble.com/mina-tcp-client-problem-tp19105767s22882p19156617.html >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> >> > > -- > View this message in context: > http://www.nabble.com/mina-tcp-client-problem-tp19105767s22882p19158051.html > Sent from the Camel - Users mailing list archive at Nabble.com. > > > -- View this message in context: http://www.nabble.com/mina-tcp-client-problem-tp19105767s22882p19161400.html Sent from the Camel - Users mailing list archive at Nabble.com.