So if the Service Consumer does not require a response, it is OK to
never set the status to DONE?  



> -----Original Message-----
> From: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> Sent: 10 November 2005 20:19
> To: [email protected]
> Subject: Re: [servicemix-user] sendSync and SM 2.0
> 
> ServiceMix 2 now enforces correct use of message exchanges.
> You can refer to the jbi spec on pages 31 to 33 to have diagrams about
the
> different state of an exchange.
> 
> Following is a description of the in-only and in-out diagrams, when
the
> exchange succeeds.
> Note that the exchange can also be set to an ERROR status, but in all
> cases, it ends with
> a DONE state, without any other informations conveyed : you can not
set
> the answer or
> an error and the DONE state at the same time.
> 
> In-Only
>    o the consumer send the message in a ACTIVE state
>    o the provider receives the message and send it back with a DONE
state
> 
> In-Out
>    o the consumer send the message in an ACTIVE state
>    o the provider receives the message, fill the response and send the
> exchange back with an ACTIVE state
>    o the consumer receives the exchange, set the status to DONE and
send
> it.
> 
> Cheers,
> Guillaume Nodet
> 
> Matthew Clark wrote:
> 
> >Craig - I am experiencing similar issues with setting status to DONE
in
> >SM2.0... the code surrounding this area is quite hard to read so I
> >haven't worked out what is going on yet.. for some reason DONE is not
in
> >the list of allowed statuses...
> >
> >
> >
> >
> >
> >>-----Original Message-----
> >>From: Craig Walls [mailto:[EMAIL PROTECTED]
> >>Sent: 10 November 2005 19:12
> >>To: [email protected]
> >>Subject: [servicemix-user] sendSync and SM 2.0
> >>
> >>
> >>I have a client that sends a message like this:
> >>
> >>InOut exchange = serviceMixClient.createInOutExchange();
> >>NormalizedMessage message = exchange.getInMessage();
> >>exchange.setService(new QName("myService"));
> >>message.setProperty("someProperty", "someValue");
> >>message.setContent(new StringSource("<question>How are
> >>
> >>
> >you?</question>"));
> >
> >
> >>serviceMixClient.sendSync(exchange);
> >>NormalizedMessage result = exchange.getOutMessage();
> >>
> >>On the service-side, my onMessageExchange() method looks a little
> >>something like this:
> >>
> >>public void onMessageExchange(MessageExchange exchange) throws
> >>MessagingException {
> >>
> >>  NormalizedMessage out = exchange.createMessage();
> >>  out.setContent(new StringSource("<answer>I am fine</answer>"));
> >>  message.setMessage(out, "out");   // PAY ATTENTION
> >>  done(exchange);                   // TO THESE LINES
> >>}
> >>
> >>In ServiceMix 1.1, this worked fine. But since moving to ServiceMix
> >>
> >>
> >2.0, I
> >
> >
> >>get an error indicating that I can't set the status to done. Fine,
so
> >>
> >>
> >I
> >
> >
> >>swapped out the commented lines above with:
> >>
> >>  message.setMessage(out, "out");
> >>  send(exchange);
> >>
> >>Now my sendSync() never returns. On a hunch, I tried this instead:
> >>
> >>  answer(exchange, out);
> >>
> >>Same effect. onMessageExchange() method completes on the
service-side,
> >>
> >>
> >but
> >
> >
> >>on the client-side, the sendSync() method never returns.
> >>
> >>I'm certain that it's something that I'm doing wrong, but I'm not
sure
> >>what. Anybody see the problem? Please help!
> >>
> >>
> >>
> >>
> >>
> >>
> >
> >
> >
> >
> >This message has been scanned for viruses.
> >
> >
> >
> >
> 


Reply via email to