Responses with "gp>" . . 

> -----Original Message-----
> From: Jaliya Ekanayake [mailto:[EMAIL PROTECTED] 
> Sent: Tuesday, September 05, 2006 6:52 PM
> To: Gilbert Pilz; sandesha-dev@ws.apache.org
> Subject: Re: Sandesha 1.0; SandeshaContext.endSequence() and 
> active, offered sequences
> 
> Hi Gilbert,
> 
> Please see my comments below.
> 
> Thanks,
> -Jaliya
> 
> 
> ----- Original Message -----
> From: "Gilbert Pilz" <[EMAIL PROTECTED]>
> To: <sandesha-dev@ws.apache.org>
> Sent: Tuesday, September 05, 2006 4:01 PM
> Subject: Sandesha 1.0; SandeshaContext.endSequence() and 
> active, offered sequences
> 
> 
> Hello Sandesha-istas!
> 
> I was working on some interop testing between Sandesha 1.0 
> and WebLogic Server 9.2 in which a Sandesha 1.0 client 
> engages in a request-response exchange with a WLS 9.2 server. 
> Everything works fine up until the point that the client 
> calls SandeshaContext.endSequence(). At this point the client 
> has terminated the outbound sequence via a 
> wsrm:TerminateSequence message but the inbound sequence 
> (established via an offer during the initial 
> CreateSequence/CreateSequenceResponse handshake) is still 
> active. The Sandesha 1.0 client blocks in endSequence() until 
> the inactivity timeout for that sequence is reached and an 
> exception is thrown.
> >>
> The exception is thrown only when the inbound sequence is not 
> completed within the InactivityTimeout right?

gp> Correct, but imagine if the InactivityTimeout were set for
gp> 48 hours or some such. From the standpoint of a user the
gp> client would "never" exit . . 

> Although I can understand that there may be reasons that the 
> client would want to block until the offered sequence is 
> terminated, I don't think it is reasonable to expect that 
> terminating an outbound sequence will necessarily result in 
> the server automatically terminating the inbound sequence.
> 
> >>
> When the client offer a sequence then it knows that there are 
> some responses that it is expecting from the server. So, 
> terminating outbound sequence does not mean that the inbound 
> sequence will also terminate. However for the client to 
> terminate gracefully (after getting all the responses) the 
> inbound sequence should also terminate with the proper 
> TerminateSequence. At least it should get the required number 
> of responses.

gp> In the test I am running the client has received the "proper"
gp> number of responses (1) and it has gracefully terminated
gp> the outbound sequence. It is blocking on a TerminateSequence
gp> for the inbound sequence which it will never get because,
gp> unlike the Sandesha server, WebLogic does not treat termination
gp> of the inbound (from its perspective) sequence as a signal
gp> to terminate the corresponding offered, outbound sequence.

> I agree with you that if the InactivityTimeout is a large 
> value then may be we need a way to inform Sandesha client 
> only to wait X number of milliseconds (where 
> X<InactivityTimeout), but in order for client to complete it 
> has to wait till it receive the required number of responses.

gp> I'm not sure how the Sandesha layer can be expected to
gp> know, a priori, what the "required" number of responses
gp> is. To stretch a point, I could define an asynchronous
gp> in-out-out-out service in which a single request message
gp> was followed by N response messages. How would the client
gp> know when the server was done sending responses? Obviously
gp> it could wait until the InactivityTimeout period has lapsed
gp> but we've already covered why this isn't always workable . .
 
> The other possibility to completely de-couple the client and 
> the client side listener that is waiting for the inbound 
> messages(responses) is to host the client itself in a 
> container (e.g. client itself can be a servlet or jsp) then 
> we can have a separate servlet or jsp which handle the repose 
> part of the client's requests and use that servlet or jsp's 
> url as the replyTo url.

gp> This is, in essence, what WebLogic does but I think the core
gp> problem still remains, however; what do you do when the thing
gp> that "contains" an RMD for an active sequence needs to clean
gp> up (stop, exit, shutdown) but is unwilling to block for the
gp> InactivityTimeout? I think sending a SequenceTerminated
gp> fault to the RMS should at least be an option.
 
> I couldn't find any language in the 200502 specs that 
> mandates such a linkage between the inbound and outbound sequences.
> 
> >>
> This is because these two sequences are considered completely 
> independent and only the client need to relate them find the 
> responses.

gp> That was my understanding as well.

> I think the application should be allowed to select from 
> three possible behaviors for endSequence():
> 
> 1) block waiting for all active inbound sequences to be 
> terminated (current behavior)
> 
> 2) send a SequenceTerminated fault to all active inbound sequences
> 
> 3) simply clean up the sequence
> 
> What do people think?
> 
> >>
> Since the suggestions are an extensions to the current 
> implementation it would be great if you could submit a patch. 
> Then we can get this functionality in Sandesha.

I'll give this a shot and post my patch to this list.

 
> --
> Gilbert Pilz
> Sr. Principal Technologist
> Office of the CTO
> BEA Systems, Inc.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to