Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 66213 invoked from network); 1 Feb 2005 16:57:09 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 1 Feb 2005 16:57:09 -0000 Received: (qmail 23812 invoked by uid 500); 1 Feb 2005 16:57:05 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 23775 invoked by uid 500); 1 Feb 2005 16:57:05 -0000 Mailing-List: contact axis-dev-help@ws.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@ws.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-dev@ws.apache.org Received: (qmail 23762 invoked by uid 99); 1 Feb 2005 16:57:05 -0000 X-ASF-Spam-Status: No, hits=0.4 required=10.0 tests=DNS_FROM_RFC_ABUSE X-Spam-Check-By: apache.org Received-SPF: pass (hermes.apache.org: local policy) Received: from whale.cs.indiana.edu (HELO whale.cs.indiana.edu) (129.79.246.27) by apache.org (qpsmtpd/0.28) with ESMTP; Tue, 01 Feb 2005 08:57:03 -0800 Received: from [127.0.0.1] (rainier.extreme.indiana.edu [129.79.246.105]) by whale.cs.indiana.edu (8.12.11/8.12.11/IUCS_2.63) with ESMTP id j11Guxnw021507; Tue, 1 Feb 2005 11:56:59 -0500 (EST) Message-ID: <41FFB4D9.3060802@cs.indiana.edu> Date: Tue, 01 Feb 2005 11:56:57 -0500 From: Aleksander Slominski User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: axis-dev@ws.apache.org Subject: Re: Client operation call interrupt - IMPORTANT References: <41FF791A.9000104@apache.org> In-Reply-To: <41FF791A.9000104@apache.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Steve Loughran wrote: > Montabert, Olivier wrote: > >>> >>> true. but if you use keepalives on the TCP link you generate useless >>> traffic; if you dont your client wont ever know that the server at >>> the far end has ceased to exist. >>> >> >> >> Indeed, I don't really know the underlying implementation >> that has been made for Axis... > > > well, step in the next time your debugger is about to make a call > >> My guess of the client call underlying implementation is: >> - AXIS generates a SOAP envelope and body. >> - AXIS opens a socket to the web server (using the end-point URL). >> - Sends an HTTP request and waits for the reply on the >> same socket. >> [ ... No further traffic occurs ... ] >> - The reply and the socket close occurs as soon as the >> skeleton sends the reply back through the same socket. >> >> Therefore I also use the getValue operation as keepalive operation, >> as it will receive a network exception when the >> server crashes. Indeed when the server or the servlet crashes >> the socket is closed. >> >> Am I right ? > > > Only if you have TCP keepalives turned on. > > If you dont, then the socket will wait forever until you try and send > some data down it. You will get no information that the server has > crashed, because there is nothing out there to send you a message. > Welcome to the harsh realities of network failure. > > Keepalives > consume bandwith, and power on mobile systems, and are off by default. > This means your architecture does not detect server failure, not > unless it has a timeout. Keepalives are implicit health check timeouts. > > 1. if you go through proxies, keeping the port open will consume > resources on the server > 2. keeping the port open means that you cant handle a transient > failure of the server, as the restart will lose the port > > >> >> Does Axis use some thread wait/notify mechanisms ? >> >> Does Axis use the user thread to perform the operation call ? > > > Olivier, the source is there for you to see, it makes blocking calls > on the socket with the thread doing the read. > > liike I said originally, consider probes. At the very least something > like > > while(no answer) { > -make call that blocks for 60 seconds > -check for cancel event > } actually i think it is a perfect case for WS-RM or WS-Reliability (only of the implementations of them were easier to use ...) as you want to get reliable delivery of messages (asynchronous - so you do not need to block waiting for response) using possibly multiple intermediaries (not just http proxy) ... alek -- The best way to predict the future is to invent it - Alan Kay