2016-07-14 26 views
0

ich eine antedeluvian Notes-Anwendung bin Aufrechterhaltung derein Timeout auf webservice Verbraucher Einstellung mit org.apache.axis.client.Call gebaut und läuft auf Domino

über eine manuell ‚Webservice‘ zu einem SAP-Backend-Verbindung

Auf dem Server wird Domino Release 7.0.4FP2 HF97 ausgeführt.

Der Webservice ist nicht der Webservice Consumer, sondern ein großer Java-Agent, der Apache soap.jar (org.apache.soap) verwendet. Unten ein Beispiel für den aufrufenden Code.

private Call setupSOAPCall() { 
    Call call = new Call(); 

SOAPHTTPConnection conn = new SOAPHTTPConnection(); 
call.setSOAPTransport(conn); 

call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); 

Es gab eine Änderung im SAP-System, die nun 8 Minuten dauert (verifiziert vom SAP-Team).

Ich erhalte eine Fehlermeldung wie folgt:

[SOAPException: faultCode=SOAP-ENV:Client; msg=For input string: "906 "; targetException=java.lang.NumberFormatException: For input string: "906 "] 

ich einen Blog-Artikel beschreibt die Fehlermeldung ganz genau gefunden:

https://thejavablog.wordpress.com/category/jmeter/

und ich zu der Hypothese gekommen dass es sich um eine Timeout-Nachricht handelt, die zu meinem Call-Objekt zurückkehrt und dass diese Timeout-Nachricht falsch analysiert wird, daher die NumberFormat-Ausnahme.

Mit Blick auf meine Protokolle kann ich sehen, dass es einen Zeitunterschied von 62 Sekunden zwischen meinem Anruf und der Antwort gibt.

ich, dass der Server im Serverdokument, Registerkarte Internet-Protokolle/HTTP/Timeouts/Anfragen Timeouts von 60 Sekunden bis 600 Sekunden, und die HTTP-Task mit

tell http restart 

Neustart geändert werden Einstellung empfohlen Ich habe Führen Sie die Tests erneut aus und ich erhalte den gleichen Fehler, und der Zeitunterschied beträgt immer noch etwas mehr als 60 Sekunden, was ich nicht erwartet habe.

Ich las Blog-Eintrag Michael Rulnau

http://www.mruhnau.net/2014/06/how-to-overcome-domino-webservice.html

die

http://www-01.ibm.com/support/docview.wss?uid=swg1LO48272

zu diesem April Punkte, aber ich bin nicht davon überzeugt, dass dies in diesem Fall gelten würde, da es Auf keinen Fall würde IBM wissen, dass mein Java-Agent tatsächlich einen Soap-Anruf tätigt.

Meine aktuelle Hypothese ist, daß entweder die I SetTimeout() Methode auf

org.apache.axis.client.Call

https://axis.apache.org/axis/java/apiDocs/org/apache/axis/client/Call.html

oder auf der org.apache.soap verwenden .transport.http.SOAPHTTPConnection

https://docs.oracle.com/cd/B13789_01/appdev.101/b12024/org/apache/soap/transport/http/SOAPHTTPConnection.html

und dass der Timeout-Wert ist ein Apache de Fehler, nicht etwas, das vom Domino-Server gesteuert wird.

Ich wäre dankbar für jede Hilfe.

Antwort

2

Ich verstehe Ihren Ansatz, und ich hoffe, dass dies der richtige ist, um Ihr Problem zu lösen.

Fügen Sie ein Debug (Konsole schreiben wäre in Ordnung), die Standard-Timeout anzuzeigen, dann versuchen Sie es auf 10 min zu erhöhen.

SOAPHTTPConnection conn = new SOAPHTTPConnection(); 
System.out.println("time out is :" + conn.getTimeout()); 
conn.setTimeout(600000);//10 min in ms 
System.out.println("after setting it, time out is :" + conn.getTimeout()); 
call.setSOAPTransport(conn); 

Jetzt denken Sie daran, dass Dommino hat auch eine Max LotusScript-/Java Ausführungszeit, überprüfen Sie diesen Wert und (zumindest für einen Versuch) ändern: http://www.ibm.com/support/knowledgecenter/SSKTMJ_9.0.1/admin/othr_servertasksagentmanagertab_r.html (es ist Version 9 Hilfe, aber dieser Teil sollten identisch sein)

+0

Hallo Emmanuel, ich dachte nicht an die maximale Ausführung von LotusScript/Java, aber es ist auf 10 Minuten während des Tages und 15 Minuten während der Nacht eingestellt, so dass es meinen Code hier nicht beeinflusst. –

+0

Hallo! Hast du in der Konsole erfahren, dass das Timeout aktualisiert wurde? –

+1

Hallo Emmanuel, meine Annahme war falsch - ich habe vorherige Instanzen des Codes gefunden, der mit langen Verzögerungen funktionierte. Das Standardzeitlimit ist 0, d. H. Keines. Ich schaute auf den falschen Teil des Puzzles. –

1

Ich habe seit dem entdeckt, dass es nicht mein Code war, der den Fehler erzeugt; das Standard-Zeitlimit für die Apache-Achse SOAPHTTPConnection ist 0, d. h. kein Timeout.