2009-07-15 3 views
0

Ich habe es mit einem automatisch generierten WebService-Stub in Java zu tun (generiert mit JAX-WS RI).In Java wurde eine Ausnahme ausgelöst, wenn während eines WebService-Aufrufs eine Netzwerkverbindung verloren ging (ähnlich WCF CommunicationException)

Mein tatsächlicher Dienst ist ein .Net-Programm, das seinen Webservice mit dem WCF basicHttpBinding aussetzt.

Wie sollte ich mit Kommunikationsproblemen während des tatsächlichen WebService-Aufrufs umgehen? (d. h. die Art und Weise, in der WCF auf dem Client Ihren Anruf mit einer catch CommunicationException versehen würde, wenn Kommunikations-/Netzwerkprobleme aufgetreten sind).

Es scheint, als gäbe es keine geprüften Ausnahmen für den Umgang damit.

(Wenn ich die automatisch generierte Stub-Schnittstelle von Web-Service-Methoden anzeigen, werfen Sie keine Exceptions, andere als die vordefinierten FaultExceptions/Messages von WSDL ausgesetzt).

Wenn ich tatsächlich getestet habe, was während eines WebService-Aufrufs passieren würde, wenn das Netzwerk getrennt wurde, hielt der Client den Aufruf einfach an, anstatt sogar eine Art Laufzeitausnahme auszulösen.

Gedanken?

Dank

+0

Es scheint, dass Ihre Frage sich vollständig auf den Java-Client/Stub bezieht und überhaupt nichts mit dem WCF-Dienst zu tun hat. Ist das korrekt? – Randolpho

+0

Sie könnten WS-ReliableMessaging verwenden, um mit solchen Problemen umzugehen. – akarnokd

+0

Ja, so scheint es. Ich denke, der Stub muss irgendwie anders generiert werden, um eine Art von überprüfter Ausnahme für Kommunikationsfehler (wie eine javax.xml.soap.SOAPException) zu entlarven. – vicsz

Antwort

0

Warum würden Sie denken, dass es sinnvoll mit einem Kommunikationsfehler zu tun zu haben (zum Beispiel aufgrund eines Netzwerkausfalls) als Ausnahme überprüft? Wie könnte der Aufrufer eines Webservice eine solche Eventualität sinnvoll behandeln?

Es scheint mir besser zu sein, zuzulassen, dass eine ungeprüfte Ausnahme bis zu dem Punkt, an dem sie vernünftigerweise gehandhabt werden kann, auf den Stapel übertragen wird.

+0

Es könnte auch eine Laufzeitausnahme sein, aber in meinem Fall scheint es, als würde keine Ausnahme ausgelöst und der Service-Aufruf einfach hängen. In einer entsprechenden .Net WCG Client-Anwendung kann ich CommunicationExceptions und TimeOutExceptions abfangen und damit umgehen. – vicsz

Verwandte Themen