Distributed Computing Advice

Being new at VisAD and Java I could use your advice on the next step in
my project design.  My visualization requires four types of data, a
surface (currently a netcdf file), a list of words, a list of document
titles, and optionally one or more text documents.  This data is
dynamic depending on the actions of the user.  The code that generates
this data only runs on a Solaris machines so I need to create a
client/server model where the server runs on the Solaris machine and
the VisAD client any machine that supports VisAD/Java3D/JFC.

I could use RemoteDataReferenceImpl to display the surface.  However,
what if more than one client attaches and want a different surface (the
first surface is always the same but the user can drill-down to produce
a different surface).  If I did use RemoteDataReferenceImpl how could I
also pass the list of words, document titles, and documents (for my
JFC components)?  Perhaps RemoteDataReferenceImpl is best used for
collaboration.

What about RMI in general.  Is it best for collaboration or can it be
used effectively for many clients contacting one server?

Two other solutions are Cobra and sockets (TCP or UDP).  I've seen
sample servers for each but cannot determine which solution is
recommended for VisAD applications.

As always, thanks in advance for any help.