Лучшая практика для веб-служб Java и удаленного исключения - PullRequest
0 голосов
/ 24 августа 2009

Я пишу веб-сервис. Итак, у меня есть:

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 (в моем случае сервлету) сделать это?

Что именно должно быть заключено в удаленное исключение - все, что происходит на сервере? или только исключения, связанные с процессом удаленного вызова (отражение, сериализация и т. д.)?

Ответы [ 2 ]

1 голос
/ 24 августа 2009

Ваш код не должен выдавать RemoteException, он должен быть зарезервирован для инфраструктуры WS, если и когда возникают ошибки при доступе к удаленному сервису.

Большинство фреймворков перехватят Exception, оберните его как SOAP-Fault, с которым клиент обычно имеет дело, выдав еще одно исключение с сообщением об ошибке из SOAP-Fault (помните, что клиент может быть не Java ).

В результате вы должны выбросить исключения, характерные для произошедшей ошибки, оставив платформу для отправки соответствующего ответа.

0 голосов
/ 24 августа 2009

Насколько я знаю, вам нужно только объявить, что методы выдают RemoteException в интерфейс.

public interface MyService extends Remote {
  public void service1() throws RemoteException;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...