Per http://objectstyle.org/cayenne/lists/cayenne-user/2006/12/0051.html exceptions thrown in the lower layers of Cayenne ROP server may not be serializable. If those are driver exceptions, just like the derby exceptions in the example above, we have little control over it. It would be nice to provide the client with more information about the exception cause, instead of generic 'XYZ does not implement java.io.Serializable " message. So we may need to catch and rethrow exceptions.
Another consideration here is security. We might add a switch "verboseClientExceptions" that would enable or disable sending of server-side exceptions to the client, thus preventing casual users from seeing too much details.