2009-08-24 79 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;

}