Your SlideShare is downloading. ×
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Remote Method Invocation
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Remote Method Invocation

1,178

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,178
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
58
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Remote Method Invocation Based on Notes by D. Hollinger Also based on Sun’s Online Java Tutorial Netprog 2002 Java RMI 1
  • 2. Network Programming Paradigms • Sockets programming: design a protocol first, then implement clients and servers that support the protocol. • RMI: Develop an application, then (statically) move some objects to remote machines. – Not concerned with the details of the actual communication between processes – everything is just method calls. Netprog 2002 Java RMI 2
  • 3. Call Semantics • Method Call Semantics – what does it mean to make a call to a method? – How many times is the method run? – How do we know the method ran at all? • RMI does a great job of providing natural call semantics for remote objects/methods. – Simply a few additional Exceptions that you need to handle. – Objects implementing the Remote interface are passed by reference. Non-remote (serializable) objects and primitive types are passed by value. Netprog 2002 Java RMI 3
  • 4. Finding Remote Objects • It would be awkward if we needed to include a hostname, port and protocol with every remote method invocation. • RMI provides a Naming Service through the RMI Registry that simplifies how programs specify the location of remote objects. – This naming service is a JDK utility called rmiregistry that runs at a well known address (by default). Netprog 2002 Java RMI 4
  • 5. RMI Adds a few layers Client App. Server App. Stubs Skeleton Remote Reference Remote Reference Transport Transport Netprog 2002 Java RMI 5
  • 6. Remote Object References • The client acquires a reference to a remote object. – This part is different from creating a local object. • The client calls methods on the remote object – No (syntactic) difference! – Just need to worry about a few new exceptions. Netprog 2002 Java RMI 6
  • 7. Overview of RMI Programming • Define an interface that declares the methods that will be available remotely. • The server program must include a class that implements this interface. • The server program must create a remote object and register it with the naming service. • The client program creates a remote object by asking the naming service for an object reference. Netprog 2002 Java RMI 7
  • 8. Java Interfaces • Similar to Class • No implementation! All methods are abstract (virtual for C++ folks). • Everything is public. • No fields defined, just Methods. • No constructor • an Interface is an API that can be implemented by a Class. Netprog 2002 Java RMI 8
  • 9. Interfaces and Inheritance • In Java a class can only extend a single superclass (single inheritance). • A class can implement any number of interfaces. – end result is very similar to multiple inheritance. Netprog 2002 Java RMI 9
  • 10. Sample Interface public interface Shape { public double getArea(); public void draw(); public void fill(Color c); } Netprog 2002 Java RMI 10
  • 11. Implementing an Interface public class Circle implements Shape { private double radius; private Point center; // define a constructor and other // methods // MUST define the methods: // getArea(); // draw(); // fill(Color c); } Netprog 2002 Java RMI 11
  • 12. Server Details – extending Remote • Create an interface the extends the java.rmi.Remote interface. – This new interface includes all the public methods that will be available as remote methods. import java.rmi.*; public interface MyRemote extends Remote { public int foo(int x) throws RemoteException; public String blah(int y) throws RemoteException; . . . } Netprog 2002 Java RMI 12
  • 13. How the interface will be used Remote Interface RemoteServer Class provides methods extends needed by extends Your Interface UnicastRemoteObject implements extends Class implementing your remote service Netprog 2002 Java RMI 13
  • 14. Server Details – Implementation Class • Create a class that implements the interface. – The class should extend UnicastRemoteObject* • This class needs a constructor that throws RemoteException ! • This class is now used by rmic to create the stub and skeleton code. *It doesn’t have to extend UnicastRemoteObject, there is another way… Netprog 2002 Java RMI 14
  • 15. Remote Object Implementation Class public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote { public MyRemoteImpl() throws RemoteException {} public int foo(int x) { return(x+1); } public String blah(int y) { return(“Your number is “ + y); } } Netprog 2002 Java RMI 15
  • 16. Generating stubs and skeleton • Compile the remote interface and implementation: > javac MyRemote.java MyRemoteImpl.java • Use rmic to generate MyRemoteImpl_stub.class, MyRemoteImpl_skel.class > rmic MyRemoteImpl Netprog 2002 Java RMI 16
  • 17. Server Detail – main() • The server main() needs to: – create a remote object. – register the object with the Naming service. public static void main(String args[]) { try { MyRemoteImpl r = new MyRemoteImpl(); Naming.bind(“joe”,r); } catch (RemoteException e) { . . . Netprog 2002 Java RMI 17
  • 18. Client Details • The client needs to ask the naming service for a reference to a remote object. – The client needs to know the hostname or IP address of the machine running the server. – The client needs to know the name of the remote object. • The naming service uses URIs to identify remote objects. Netprog 2002 Java RMI 18
  • 19. Using The Naming service • Naming.lookup() method takes a string parameter that holds a URI indicating the remote object to lookup. rmi://hostname/objectname • Naming.lookup() returns an Object! • Naming.lookup() can throw – RemoteException – MalformedURLException Netprog 2002 Java RMI 19
  • 20. Getting a Remote Object try { Object o = Naming.lookup(“rmi://monica.cs.rpi.edu/joe”); MyRemote r = (MyRemote) o; // . . . Use r like any other Java object! } catch (RemoteException re) { . . . } catch (MalformedURLException up) { throw up; } Netprog 2002 Java RMI 20
  • 21. Starting the Server • First you need to run the Naming service server: rmiregistry • Now run the server: java MyRemoteImpl Netprog 2002 Java RMI 21
  • 22. Sample Code • There is sample RMI code on the course homepage: – BankAccount: remote access to a bank account – SimpleRMI: remote integer arithmetic – AlternativeSimpleRMI: Implementation class doesn’t extend UnicastRemoteObject – RemoteSort: remote sort server – uses Java List objects Netprog 2002 Java RMI 22

×