# Webserivce - Timeout in Axis - Unterschiede SO_Timeout.



## Guest (12. Feb 2009)

Hallo,

folgende Frage:

Mittels stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(60000); kann man doch den Timeout für einen Webservice Client festlegen.

Aber was für ein Timeout ist hier gemeint? Der des zugrundeliegenden (SOAP)Transportprotokolls (z.B. HTTP)? Ich konnte dazu keine genau Erklärung finden. Merkwürdigerweise kann man ja auch noch andere Timeouts festlegen, z.B. 

Socket und Connection Timeout über

stub._getServiceClient().getOptions().setProperty(HTTPConstants.SO_TIMEOUT,new Integer(60000));
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CONNECTION_TIMEOUT,new Integer(60000));

Was ist nun der Unterschied zu dem setTimeOutInMilliSeconds???

Da das entsprechende Unterforum Webservices sehr schwach besucht scheint (fast überall 0 Antworten) wage ich es mal die Frage hier zu stellen und nicht da. Ich hoffe irgendjemand kann mir weiterhelfen.

Danke


----------



## Ebenius (12. Feb 2009)

Das sollte der ResponseTimeout sein, also die Zeit die der Client gewillt ist, vom Zeitpunkt des Sendens der SOAP-Anfrage bis zum Eintreffen der Antwort zu warten.

SO_TIMEOUT ist der Timeout für Lesezugriffe auf der Socketverbindung.

CONNECTION_TIMEOUT ist der Timeout für den Verbindungsaufbau auf der HTTP Transportschicht.

HTH, Ebenius


----------



## Gast (12. Feb 2009)

Hallo Ebenius,

vielen Dank. Endlich mal eine nützliche Antwort  Ist es dann ausreichend nur diesen Wert (setTimeoutInMilliseconds) hoch zu setzen, wenn mein Service sich etwas länger Zeit lässt oder kann es dann trotzdem passieren, dass auf Transportebene (HTTP) ein Timeout passiert? Das hab ich nicht ganz verstanden. Oder abstrahiert das setTimeoutInMilli... vom zugrundeliegenden Transportprotokoll? D.h. meine Verbindung steht solange bis ich ein SOAP Response bekomme...

Wenn ich die SOAP Nachricht über HTTP sende, bleibt diese HTTP Verbindung doch eine gewisse Zeit offen, richtig? D.h. ich kann auf dieser mein SOAP Response bekommen. Muss dann sowohl der Connection_Timeout als auch der setTimeoutInMilliSecondsGesetzt werden???


----------



## Ebenius (12. Feb 2009)

Der CONNECTION_TIMEOUT bezieht sich meines Wissens lediglich auf URLConnection.setConnectTimeout() der wiederum dazu führt, dass URLConnection.connect() fehl schlägt, wenn die Verbindung nicht innerhalb der Zeit *aufgebaut* werden kann. Ich gehe davon aus, dass dies nichts mit KeepAlive zu tun hat.

Garantie kann ich Dir da aber keine geben; mit Axis2 hab ich zwar serverseitig schon gearbeitet, aber die Timeouts hab ich noch nie angefasst.

Ebenius


----------

