2009-08-24 8 views
0

Ich schreibe einen Web-Service. So habe ich:Best Practice für Java Web Services und Remote-Ausnahme

public interface MyService extends Remote 
{ 
    public void service1(); 
} 

public class MyServiceImpl implements MyService 
{ 
    public void service1() { /* do something that sometimes throws an exception */ } 
} 

ich über RemoteException lesen. Sollte ich den gesamten Code in service1() in einem try..catch wickeln, die jede Ausnahme in einem RemoteException umschließt? Dann muss ich es für service2(), service3() und so weiter tun.

Ist es besser, den Aufrufer (ein Servlet in meinem Fall) dies tun zu lassen?

Was genau sollte in Remote-Ausnahme verpackt werden - alles, was auf dem Server passiert? oder nur Ausnahmen, die sich auf den Remote-Aufrufprozess beziehen (Reflektion, Serialisierung usw.)?

Antwort

1

Der Code sollte nicht RemoteException werfen, sollte es für den WS Rahmen reserviert werden, ob und wenn Fehler der Remote-Service auftreten erreichbar. Die meisten Frameworks fangen Exception ein, wickeln sie als SOAP-Fault auf, was der Client normalerweise behandelt, indem er eine weitere Ausnahme mit der Fehlermeldung von der SOAP-Fault auslöst (denken Sie daran, dass der Client möglicherweise nicht Java ist). .

Die up-shot von diesem ist, sollten Sie Ausnahmen für den aufgetretenen Fehler auslösen, so dass das Framework die entsprechende Antwort senden.

+0

Wow, irgendwie habe ich deine Antwort bis jetzt verpasst. Klingt, als hätte ich alles falsch gemacht ... Danke für die Info. – daramasala

0

Soweit ich weiß, müssen Sie nur deklarieren, dass die Methoden RemoteException in die Schnittstelle werfen.

öffentliche Schnittstelle MyService erweitert Fern {

public void service1() throws Remote;

}