2009-08-24 71 views
0

我正在編寫一個web服務。所以,我有:java web服務和遠程異常的最佳實踐

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

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

我念叨RemoteException。我是否應該將service1()中的所有代碼包含在try..catch中,該代碼包含RemoteException中的任何異常?那麼我將不得不爲service2()service3()等等。

讓invoker(在我的情況下是一個servlet)來做這件事更好嗎?

究竟應該在遠程異常中包裝什麼 - 服務器中發生的一切?或者只有處理遠程調用過程(反射,序列化等)的異常?

回答

1

您的代碼不應該被扔RemoteException,應該對是否以及何時發生錯誤訪問遠程服務WS框架保留。

大多數框架將捕獲Exception,將其包裝爲SOAP-Fault,這是客戶端通常通過拋出另一個異常與來自SOAP-Fault的錯誤消息進行處理(請記住客戶端可能不是Java) 。

這是你應該拋出特定於發生故障的異常,讓框架發送適當的響應。

+0

哇,我不知何故錯過了你的答案,直到現在。聽起來好像我一直在做這一切...... 感謝您的信息。 – daramasala 2010-05-16 13:41:31

0

據我所知你只需要聲明這些方法在接口中拋出RemoteException。

公共接口爲MyService延伸遠程{

公共無效服務1()將拋出RemoteException;

}