We connect to multiple third party system via jax-rpc. The default wrapping of those webmethods when they want to throw a fault is java.rmi.RemoteException.

The thing to keep an eye on is that EJB transactions will roll back on System Exceptions which include RuntimeException and RemoteException. The subclasses of these exception can be turned into Application Exceptions, rather than System Exceptions, and consequently not causing transaction rollbacks by the @javax.ejb.ApplicationException annotation.

However, the annotation can contain the rollback=true definition which will cause a roll back to be introduced into the flow of control of that application exception is caused.
Cam Riley: South Sea Republic. Freedom, liberty, equity and an Australian Republic.