Ich habe einen CXF-Dienst generiert und stellen Sie Timeouts für 120000ms = 2min
für beide:Einrichten eines Client ReceiveTimeout für CXF Service über 4 Minuten
requestContext.put("javax.xml.ws.client.receiveTimeout", 120000);
requestContext.put("javax.xml.ws.client.connectionTimeout", 120000);
Es funktioniert gut, ich habe es für 20s, 1min, 3min
getestet - jedes Mal wenn es wartet für die Antwort genau das ist Zeit.
Problem erscheint jedoch, wenn ich es auf 5min
setzen wollte. Der Service wartet nur auf ~240800ms = ~4min
.
Ich rufe jboss esb service. Dieser dauert maximal 5min
. Der CXF-Dienst wird von der einfachen .jar
Anwendung von meinem PC aus aufgerufen, so dass keine anderen Server/Container zwischen (wie Tomcat usw.) vorhanden sind.
Irgendwelche Ideen, um meine Timeout-Einstellungen zu beheben?
ein EDIT Apache CXF 3.0.1
Mit
Was jetzt wird mir klar, dass ich immer 2 diffrent Nachrichten auf meinen Timeout-Einstellungen abhängig:
Wenn ich es
<=4min
gesetzt (über meine oder @ pedrofb Methode), nach dieser Zeit bekomme ich:org.apache.cxf.interceptor.Fault: Nachricht konnte nicht gesendet werden. bei org.apache.cxf.interceptor.MessageSenderInterceptor $ MessageSenderEndingInterceptor.handleMessage (MessageSenderInterceptor.java:64) bei org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java:307) bei org.apache.cxf. endpoint.ClientImpl.doInvoke (ClientImpl.java:516)
verursacht durch: java.net.SocketTimeoutException: SocketTimeoutException http://esb:8080/MyService/ebws/Category/MyService Aufruf: Read timed out
wenn ich es
>4min
oder0
gesetzt, ich bin immer :javax.xml.ws.s oap.SOAPFaultException: Es wurde keine Antwort für den Dienst empfangen [Kategorie: MeinService], Wird nicht wiederholt.
Um ehrlich zu sein, ich bin ziemlich verwirrt, was ein erwartetes Ergebnis ist (erste, glaube ich)
EDIT 2
I MyService
über SoapUI
getestet haben. Ich habe dort eine 5min
Timeout gesetzt und mit Probeanforderung schießen.
Wieder nach etwas mehr als 4 min Ich erhalte eine:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header/>
<env:Body>
<env:Fault>
<faultcode>env:Server</faultcode>
<faultstring>No response received for service [Category:MyService], Told not to retry.</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
Allerdings, wenn ich log schauen Sie in der Jboss ESB habe ich keine Ausnahmen, keine Fehler, MyService
zuletzt ein 1 min mehr (ca. 5 Minuten) und normale Antwort zurückgeben - was durch Audit-Tool bestätigt wird (die jede Anfrage an mein esb registrieren - mit Antwort und Zeit).
Ich denke, dass dieser Punkt darauf, was @pedrofb in Kommentar erwähnt. Irgendwelche Vorschläge, was das sein kann?
Kann der Server die Antwort auf vier Minuten begrenzen? – pedrofb
Ich habe überprüft, dass - Service reagiert nach etwa 4,5min mit normalen, erwarteten Nachricht, Server-Timeout ist auf 5 min festgelegt, die bestätigt, dass – ilovkatie
Vielleicht ist Ihr Problem ähnlich zu diesem http: //rayploski.blogspot. com.es/2010/08/jbossbs-setting-up-long-running.html Der Client erhält eine Zeitüberschreitung, während der ESB die Verarbeitung fortsetzt. In diesem Fall ist es notwendig, 'org.jboss.soa.esb.ws.timeout' in ESB – pedrofb