Now that you have completed the definition of the
server-side RatingServer
class, you move back to the client side to
modify the ClientStub
class to access a remoterather than
localinstance of the RatingServer
class.
Another class method, lookup
, of the Naming
class
provides the required access using a host identifier, such as
whitney.ai.mit.edu
, and the name with which you have chosen to
identify the remote instance.
As you did on the server side, you need a try
catch
combination to
deal with thrown
exceptions.
import java.rmi.*; import java.math.*; public class ClientStub { public static void main(String args[]) { // Construct a movie for testing Movie movie = new Movie(2, 3, 8, "Psycho"); // Construct a rating server for testing try { String computer = "whitney.ai.mit.edu"; System.out.println("The client is asking server, " + computer + ", for a rating"); RatingServerInterface ratingServer = (RatingServerInterface) (Naming.lookup("//" + computer +"/ratingService")); int rating = ratingServer.serverRating(movie); System.out.println("The server, " + computer + ", returned " + rating); } catch (Exception e) { System.err.println("Rating client exception: " + e.getMessage()); e.printStackTrace(); } } }