Webserivce - Timeout in Axis - Unterschiede SO_Timeout.

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
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

Top Contributor
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
 
G

Gast

Gast
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

Top Contributor
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
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben