The primary benefit of using
SOAP is that it is cross platform and language-independent. Once you publish a SOAP web service, clients can access it using
Java, Perl, Python, C#, etc. This is because SOAP is a standard put forth by the W3C. The other advantage of SOAP is that it is supported by virtually all of the major application server vendors. In my opinion, SOAP is also easier to use.
RMI, on the other hand, is Java-specific. You would be better off using remote
EJB objects than you would be using traditional RMI. EJB objects at least provide of the basic services your application would likely require (transactions, security, etc). Providing cross platform availability in this situation would require using CORBA, which is anything but fun.