Re: Replacing JRMP with JERI

Robert DiFalco <[email protected]>
Newsgroups gmane.comp.java.sun.rmi
Message-ID <[email protected]>
What I'm particularly interested in is replacing JRMP with JERI with the
only changes being to use NIO, SSL, and export to not use DGC. I'm not
interested in the reggie LUS or any of that.  

-----Original Message-----
From: Gregg Wonderly [mailto:[email protected]] 
Sent: Wednesday, July 06, 2005 10:01 AM
To: [email protected]
Subject: Re: Replacing JRMP with JERI

George Ludwig wrote:
> There's the rub...if all you do is use JRMP and rmiregistry with JERI,

> then what you've really done is spent time to re-implement your 
> RMI-based system to behave exactly the way it used to. No swappable 
> transports, no (more convenient) dynamic code downloading, etc. And, 
> if you recall from our conversation that got me in to the JINI pool in

> the first place, no additional control over the DGC.
>
> I see little point in moving to JERI unless you really move to JERI, 
> rather then just a minor re-implementation of JRMP.

Some RMI applications use unicast sockets to serialize proxies between
applications.  In that model, you don't need a lookup service.  All you
need to do is to use an Exporter to get a proxy, and then serialize that
to another JVM.  I know that's not a big number of applications, but
that is the simple use of JERI without any of the Jini services.

>>The flexibility of the Configuration mechanism means that there is not

>>a canned API with a limited set of methods to learn.  Instead, you 
>>design your configuration values and how your application uses them.  
>>This is no different than using a properties file, or some other form 
>>of configuration though, so this shouldn't be a foreign concept to 
>>most Java developers.
>
> I didn't go in to the configuration mechanism, because any existing 
> RMI app has already got a way to configure the services. And in my own

> case, at least, it's so integral that just replacing it with the JINI 
> config stuff is pretty much out of the question (at least until I get 
> around to re-architecting the system).

There are of course many ways to get a Configuration.  The documented
way is to just pass the String[] from your main method into
ConfigurationProvider.getInstance().  You can of course use a hardcoded
file name, a filename from a different configuration interface, a system
property specified file name, or a different implementation of
Configuration.  In one of my applications that makes extensive use of
the command line, I chose to use a system property instead and just use

        Configuration config = ConfigurationProvider.getInstance( new
String[] {
                System.getProperty("myapp.config.file") } );

This works fine.  Then I can get the Exporter, lusProxyPreparer etc from
that Configuration...

>>Thanks for putting together your rundown on steps to go through 
>>George.  Also, please spend some time look at the jini.org project, 
>>v2getsmart at http://v2getsmart.jini.org.  This project has all kinds 
>>of tutorial materials and links related to learning more about JERI 
>>and the related features in Jini2.0.
>
> I've been through that stuff, and there is lots of good info. But the 
> caveat is that most of the info relates to JINI 2.0, rather than the 
> 2.1 beta. And if you're on the beta and trying to get reggie to run 
> based on a 2.0 tutorial, you will be pulling your hair out just as I 
> did (hence my long section on reggie!).

All of my Jini 2.0 services run just fine using the Jini 2.1 jar files
with absolutely no changes.  What is different between 2.0.2 and 2.1beta
is the layout of the JTSK directory tree.  There are some things in the
tutorial that are broken.  It's a beta!  Trying something new, using a
beta, is a risky proposition.

> Plus, there is no actual tutorial from the point of view of an RMI 
> programmer trying to move his system over.
>
> As a developer, I usually go for the beta (if it's a significant rev) 
> because I don't want to have to re-learn anything once the beta is 
> released.

For RMI programmers moving to Jini, there is no difference between Jini
2.0 and Jini 2.1 from an API perspective.  All the Exporter,
ProxyPreparer, ILFactory etc interfaces are backward compatible.  The
Sun contributed Jini Technology Starter kit is one implementation of the
Jini specification.  Currently, it is the only complete implementation.
However, there are other implementations of various parts of the
specification for specifically focused businesses.

If you use the com.sun.jini.start.ServiceStarter framework, and draw
from the examples in the JTSK for creating your implementation/startup,
then you'll see the differences that Sun has chosen between how they
packaged the APIs for 2.0 verses the 2.1beta.  This packaging is not
part of the specification, and is not considered to be 'Jini' because of
that fact.

The key thing to remember about Jini is that it is based on a
specification.  It's not a bunch of random code and development that
doesn't care about compatibility.  The Jini community demands
compatibility where it makes sense.
There are very specific design decisions that have been made by the Sun
team and from input from the rest of the community through voting that
are keeping things focused.

The packaging issue is something that the community discusses.  But,
dictating a particular packaging would imply some limitations on usage
patterns.  So far, noone has made a proposal that we dictate how all the
jar files in the JTSK are layedout or managed.

In my installations, I always put the appropriate jars into a different
directory structure than one the JTSK uses, because I have specific
needs.

People who are just starting need something that works.  Right now, the
2.1beta is broken from several directions.  If you don't know anything
about Jini, you'll fight it, as you discovered.

So, I'd still recommend using Jini 2.0.2 as a starting point for anyone
just getting started.  It represents something that is more stable.
Learning about Jini, can be very frustrating if you are also fighting
how to use the JTSK tutorial and associated files.

Gregg Wonderly

========================================================================
===
To unsubscribe, send email to [email protected] and include in the
body of the message "signoff RMI-USERS".  For general help, send email
to [email protected] and include in the body of the message "help".

For a list of frequently asked RMI questions please refer to:
http://java.sun.com/j2se/1.3/docs/guide/rmi/faq.html

To view past RMI-USERS postings, please see:
http://archives.java.sun.com/archives/rmi-users.html

===========================================================================
To unsubscribe, send email to [email protected] and include in the body
of the message "signoff RMI-USERS".  For general help, send email to
[email protected] and include in the body of the message "help".

For a list of frequently asked RMI questions please refer to:
http://java.sun.com/j2se/1.3/docs/guide/rmi/faq.html

To view past RMI-USERS postings, please see:
http://archives.java.sun.com/archives/rmi-users.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.