Exceptions über Webservices

  • Themenstarter Gaunt (nicht eingelogt)
  • Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gaunt (nicht eingelogt)

Gast
Hi
ich hab da ein Problem und vielleicht kann mir ja einer helfen:

Ich habe da einen WS. Der zieht über Corba Informationen aus einem ERP System. Dabei kann natürlich was schiefgehen: Die Person kann nicht gefunden werden, ist nicht eindeutig oder es gibt technische Probleme.
Tritt sowas auf dann werden entsprechende Exceptions geworfen. Die Klasse die den WS repräsentiert bekommt die auch und ich versuche die einfach weiter zu werfen.
Auf der Client Seite kommen die aber alle nur als Rmi Exceptions an obwohl er die anderen auch kennt und verwenden will. Aber im Catch fängt er immer nur RMI:-(
In denen steht zwar auch drinn was das Problem war und auch welche Exception ursprünglich geworfen wurde, aber kann man nicht irgendwie sofort die richtige Ausnahme abfangen???

greetz & THX
Nils
 

Lim_Dul

Top Contributor
Ohne Ahnung von der Materie zu haben:

Es kommt auf die Reihenfolge an, wie man die Exceptions catched:
Code:
catch(Exception e) {
// Tu was A
} catch(NullPointerException e2) {
// Tu Was B
}

Tu Was B kann nie ausgeführt werden, da die NPE schon in Tu Was A abgehandelt wird.
Es wird nur der erste catch Block ausgeführt, auf den die Exception zutrifft.
Das heißt, hier müsste die Reihenfolge umgedreht werden.

Hilft das?
 

Gaunt

Mitglied
Hi
Also das habe ich mir auch schon gedacht. Aber die eigenen Exceptions werden vor der RMI Exception gecatched. Trotzdem kommt die nur als RMI an:-(
Aber nur weiter. Nicht selten sinds ja so einfach Dinge die man wieder mal verpeilt hat!
greetz
Nils
 

Lim_Dul

Top Contributor
Es kann natürlich sein, dass zur Übertragung, die Exceptions in RMI Exceptions gekapselt werden. Also könntest du schauen, um du mit getCause() an die ursprüngliche Exception kommst.
 

Gaunt

Mitglied
Hi
get Cause gibt mir nur null zurück:-(

Aber das ist es ja. Selbst wenn man so an die original Exception kommen würde ist das nicht das was ich will.
Ich hätte gerne, dass die Exceptions in dem Block gefangen werden, der sie auch erhalten sollte.
Der Client (besser gesagt Eclipse;-) ) erkennt ja das eine bestimmte Funktion diese oder jene Exception werfen könnte. Dann wäre es doch auch nur sinnvoll wenn die da gefangen wird.
Ich kann ja schlecht jedem der den WS nutzen will erst mal erklären das er von hinten durchs Schlüsselloch schießen muss um an eine Ausnahme zu kommen;-)

Werfe ich vielleicht die Exceptions falsch???
Die stehen bei der Methode einfach oben alle als throws drinn und werden in den Catch Blöcken einfach weiter geworfen.
Schreibe ich direkt beim Service einen kleinen testdriver in dem ich die Funktion also lokal aufrufen bekomme ich genau die Exception die ich haben will. Lokal funktionert also alles. Nur leider nicht über den WS:-(

Das die Remote Exception das irgendwie kapselt ist somit klar. Aber kann man das der nicht irgendwie abgewöhnen oder muss ich mich schlicht und ergreifend damit abfinden das es nicht geht???
Aber warum weden dann die selbst erstellten Exceptions über die WSDL Datei bekannt gegeben??? Irgend einen Sinn muss das doch haben :roll:

???:L

Das nervt!!!

greetz
Nils
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben