Java Web服务和远程异常的最佳实践

时间:2009-08-24 12:53:09

标签: java web-services

我正在写一个网络服务。所以我有:

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()执行此操作。

让调用者(在我的情况下是一个servlet)更好吗?

究竟应该包含在远程异常中 - 服务器中发生的一切?或只是处理远程调用过程的异常(反射,序列化等)?

2 个答案:

答案 0 :(得分:1)

您的代码不应该抛出RemoteException,如果在访问远程服务时发生错误,应该为WS框架保留它。

大多数框架都会捕获Exception,将其包装为SOAP-Fault,客户端通常会通过抛出SOAP-Fault的错误消息来处理另一个异常(请记住客户端可能不会是Java)。

这样做的最后一点是你应该抛出特定于已经发生的错误的异常,让框架发送适当的响应。

答案 1 :(得分:0)

据我所知,你只需要声明方法在接口中抛出RemoteException

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