ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » SOAPInput and one-way operation

Post new topic  Reply to topic
 SOAPInput and one-way operation « View previous topic :: View next topic » 
Author Message
Esa
PostPosted: Wed May 23, 2012 10:58 pm    Post subject: SOAPInput and one-way operation Reply with quote

Grand Master

Joined: 22 May 2008
Posts: 1387
Location: Finland

How to make SOAPInput return http ack 202 for a one-way operation?

I have created a mock service that serves an one-way operation. Broker version 6.1. It always returns 505 HTTP version not supported. I'm calling the service from another flow on the same broker. I have tried to change the calling end to use HTTP version 1.0 instead the default 1.1, but it does not help.

I would also like to know if SOAPInput sends the ack for one-way operations immediately after having received the call or only after it has committed the flow thread. I cannot test this because my server flow does not want to co-operate.
Back to top
View user's profile Send private message
smdavies99
PostPosted: Wed May 23, 2012 11:13 pm    Post subject: Reply with quote

Jedi Council

Joined: 10 Feb 2003
Posts: 6076
Location: Somewhere over the Rainbow this side of Never-never land.

Isn't this a case for an ASYNC SOAP service?
_________________
WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995

Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions.
Back to top
View user's profile Send private message
Esa
PostPosted: Thu May 24, 2012 1:13 am    Post subject: Reply with quote

Grand Master

Joined: 22 May 2008
Posts: 1387
Location: Finland

smdavies99 wrote:
Isn't this a case for an ASYNC SOAP service?


Well, one-way calls are kind of asynchronous because they do not expect to get any reply. But there should be no reason to use WS-addressing with one-way calls, unless I have misunderstood something.
Back to top
View user's profile Send private message
mgk
PostPosted: Thu May 24, 2012 1:27 am    Post subject: Reply with quote

Padawan

Joined: 31 Jul 2003
Posts: 1642

Hi.

Quote:
I would also like to know if SOAPInput sends the ack for one-way operations immediately after having received the call


Yes, if the WSDL indicates a one-way message then the Ack is sent immediately, before the message is sent down the flow. This can be different in Gateway mode, but that's after v 6.1..

Quote:
It always returns 505 HTTP version not supported


Are you sure the error is correct? I might have expected a Method not supported if you were sending GET, but not version unless you are sending a custom HTTP version... Can you capture the msg on the wire?


Kind Regards,
_________________
MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions.
Back to top
View user's profile Send private message
Esa
PostPosted: Thu May 24, 2012 5:38 am    Post subject: Reply with quote

Grand Master

Joined: 22 May 2008
Posts: 1387
Location: Finland

thanks, mgk

putting TCPMon in between helped me to solve the problem. I had a SOAPReply in the flow, which caused an exception. When I corrcted it and redeployed, the original error vanished as well. No idea why.
Back to top
View user's profile Send private message
Esa
PostPosted: Thu May 24, 2012 5:53 am    Post subject: Reply with quote

Grand Master

Joined: 22 May 2008
Posts: 1387
Location: Finland

mgk wrote:

Yes, if the WSDL indicates a one-way message then the Ack is sent immediately, before the message is sent down the flow. This can be different in Gateway mode, but that's after v 6.1..


It does not seem to be so. If the endpoint service called by the flow is down, I get the ack in SOAPUI only after the SOAPRequest in the flow has timed out.

And that makes sense, because especially in the case of a one-way operation the flow should be able to send an http error code to the client, shouldn't it?

The question is how to do it when the flow starts with a SOAPInput node. Perhaps by propagating a Root with an HTTPReply header but no body to a SOAPReply?

SOAPInput node seems to send a 202 ack even if there has been an exception in the flow.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Thu May 24, 2012 6:00 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

Esa wrote:
mgk wrote:

Yes, if the WSDL indicates a one-way message then the Ack is sent immediately, before the message is sent down the flow. This can be different in Gateway mode, but that's after v 6.1..


It does not seem to be so. If the endpoint service called by the flow is down, I get the ack in SOAPUI only after the SOAPRequest in the flow has timed out.

Then either the WSDL does not indicate a one-way operation, the SOAPUI client isn't calling it as a one-way operation, or something is broken.

Esa wrote:
And that makes sense, because especially in the case of a one-way operation the flow should be able to send an http error code to the client, shouldn't it?

In the case of a one-way operation, the ACK should be sent as soon as the service has reasonably received the request. All http error codes that might be sent due to issues processing the request will be returned in an async response, if one is asked for. Otherwise, again, it's "fire-and-forget".

Esa wrote:
The question is how to do it when the flow starts with a SOAPInput node. Perhaps by propagating a Root with an HTTPReply header but no body to a SOAPReply?

SOAPInput node seems to send a 202 ack even if there has been an exception in the flow.

Again, that's the correct behavior. The ACk says "I've *received* the request". If you need to ensure that the request is processed then it's not a one-way operation. It's a request/reply, potentially with an async reply rather than a sync reply.
Back to top
View user's profile Send private message
mgk
PostPosted: Thu May 24, 2012 7:08 am    Post subject: Reply with quote

Padawan

Joined: 31 Jul 2003
Posts: 1642

Also, check your fixpac level is current. I vaguely recall one-way problems in early 6.1 fixpacs...
_________________
MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions.
Back to top
View user's profile Send private message
Esa
PostPosted: Fri May 25, 2012 12:39 am    Post subject: Reply with quote

Grand Master

Joined: 22 May 2008
Posts: 1387
Location: Finland

Well, fixpacks or not, it seems one-way is problematic by default, unless you are distributing simple short-lived event messages that are allowed to get lost.

It seems we are moving towards request-reply after all, to be able to implement more fine-grained centralized logging and delayed retry also in cases other than the endpoint servers just being down.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » SOAPInput and one-way operation
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.