Плохая идея связать исключения с RMI?
Это плохая идея использовать цепочку исключений при создании исключений RemoteExceptions? У нас есть RMI-сервер, который делает что-то вроде этого:
public Object doSomething() throws RemoteException
{
try
{
return getData();
}
catch (CustomException ex)
{
throw new RemoteException(ex);
}
}
Я получаю UnmarshallException, вызванную ClassNotFoundException в моем клиенте. С другой стороны, получается, что сама CustomException экспортируется. К сожалению, еще одно исключение глубоко внутри этого парня НЕ экспортируется, и здесь возникает исключение ClassNotFoundException. Я думаю, что иерархия выглядит примерно так:
RemoteException -> CustomException -> SQLException -> NotExportedException
Проблема, которую я вижу, заключается в том, что, хотя мы можем гарантировать, что CustomException экспортируется, мы не можем гарантировать, что существуют исключения более низкого уровня.
Из-за этого я НИКОГДА не использую цепочку исключений с RemoteExceptions. Вместо этого я думаю, что мне, вероятно, следует зарегистрировать трассировку стека на стороне сервера и выдать простое ванильное RemoteException без привязки к «причине». Кто-нибудь имел дело с этой ситуацией раньше?