1 / 25

Remote Method Invocation 1/2 “Hello World”

Remote Method Invocation 1/2 “Hello World”. August 8, 1997 SPARCS, KAIST dgtgrade@sparcs.kaist.ac.kr. Table of Contents. What is? Security Object Serialization Under the Hood. What is?. Networking moving files and data run programs on another host Remote Method Invocation

Download Presentation

Remote Method Invocation 1/2 “Hello World”

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Remote Method Invocation1/2 “Hello World” August 8, 1997 SPARCS, KAIST dgtgrade@sparcs.kaist.ac.kr

  2. Table of Contents • What is? • Security • Object Serialization • Under the Hood dgtgrade@SPARCS.KAIST.ac.kr

  3. What is? • Networking • moving files and data • run programs on another host • Remote Method Invocation • a facility that allows Java programs to call certain methods on a remote server • another virtual machine • search engine • remote objects and methods work just like the local ones • Socket • applications-level protocols to encode and decode messages cont dgtgrade@SPARCS.KAIST.ac.kr

  4. Cont’d • needs threaded Server • RPC( Remote Procedure Call ) • external data representation, such as XDR • does not translate well into distributed object systems dgtgrade@SPARCS.KAIST.ac.kr

  5. Security • Just as an applet • a host can limit what the remote clients can do • SecurityManager • Public key authentication • allow different users different levels of access to a remote object dgtgrade@SPARCS.KAIST.ac.kr

  6. Object Serialization • Object reference • really transferred is a reference to the object • problem • the remote machine can’t read what’s in the memory of the local machine • Two ways around this problem • a special remote reference to the object • when the local machine passes a remote object to the remote machine • a copy of the object • when the local machine passes one of its own objects to the remote machine cont dgtgrade@SPARCS.KAIST.ac.kr

  7. Cont’d • To copy an object • convert the object into a stream of bytes • more difficult than it appears at first glance because objects can include other objects as fields • these bytes can also be written to disk, and read back from disk at a later time • For security reasons, some limitation on serializable • All Java primitive types and remote objects can be serialized • non-remote objects can only be serialized if they implement the java.io.Serializable interface cont dgtgrade@SPARCS.KAIST.ac.kr

  8. Cont’d • Not Serializable • Threads, InputSreams, OutputSreams, Peer classes, JDBC ResultSet, Most of the sun classes • Interface java.io.Serializable • has no methods or fields and serves only to identify the semantics of being serializable dgtgrade@SPARCS.KAIST.ac.kr

  9. Under the Hood • Three different mechanisms to pass arguments to and return resluts • primitive types( int, boolean…) • passed by value • reference to remote objects • remote reference • objects that do not implement the Remote interface • complete copies • Objects that do not allow themselves to be serialized cont dgtgrade@SPARCS.KAIST.ac.kr

  10. Cont’d • Compatibility with existing Java programs, Transparency to the programmer Logical Path The Internet cont dgtgrade@SPARCS.KAIST.ac.kr

  11. Cont’d • Stub • a special object that implements the remote interfaces of the remote object • calling remote object, in fact calling an equivalent method in the stub • passes the invocation into the remote reference layer • Remote Reference Layer • Sometimes refers to multiple virtual machines on multiple hosts dgtgrade@SPARCS.KAIST.ac.kr

  12. Packages • java.rmi • include exceptions that will be visible on the client side • java.rmi.server • include exceptions that will be visible on the client side • java.rmi.registry • java.rmi.dgc • distributed garbage collection dgtgrade@SPARCS.KAIST.ac.kr

  13. Hello World • Four source files • The Java remote interface • The Java remote object (server) which implements the remote interface • The Java applet • The HTML code dgtgrade@SPARCS.KAIST.ac.kr

  14. Remote Interface • Why need? • So many problems in network • Characteristics • must be public • extends java.rmi.Remote • throws java.rmi.RemoteException • A remote object passed as an argument or return value must be declared as the remote interface, not the implementation class cont dgtgrade@SPARCS.KAIST.ac.kr

  15. Cont’d Program Source package examples.hello; public interface Hello extends java.rmi.Remote { String sayHello() throws java.rmi.RemoteException; } dgtgrade@SPARCS.KAIST.ac.kr

  16. Implementation Class • Needs to • implements a interface • define a constructor • implements methods • create and install a SecurityManager • create one or more instances of remote object • register a remote object cont dgtgrade@SPARCS.KAIST.ac.kr

  17. Cont’d Program Source package examples.hello; import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class HelloImpl extends UnicastRemoteObject implements Hello { private String name; public HelloImpl(String s) throws RemoteException { super(); name = s; } public String sayHello() throws RemoteException { return "Hello World!"; } cont dgtgrade@SPARCS.KAIST.ac.kr

  18. public static void main(String args[]) { // Create and install a security manager System.setSecurityManager(new RMISecurityManager()); try { HelloImpl obj = new HelloImpl("HelloServer"); Naming.rebind("//myhost/HelloServer", obj); System.out.println("HelloServer bound in registry"); } catch (Exception e) { System.out.println("HelloImpl err: " + e.getMessage()); e.printStackTrace(); } } } Cont’d • implements a interface • java.rmi.server.UnicastRemoteObject extends java.rmi.server.RemoteServer extends java.rmi.server.RemoteObject cont dgtgrade@SPARCS.KAIST.ac.kr

  19. Cont’d • define a constructor • super( ) • java.rmi.server.UnicastRemoteObject, which "exports" the remote object • java.rmi.RemoteException • implements methods • the methods not specified in the remote interface • can only be invoked within the virtual machine running the service • create and install a SecurityManager cont dgtgrade@SPARCS.KAIST.ac.kr

  20. Cont’d • create one or more instances of remote objects • register a remote object • like URL • default port:1099 • For security reasons, an application can bind or unbind only in the registry running on the same host dgtgrade@SPARCS.KAIST.ac.kr

  21. Client Applet Program Source package examples.hello; import java.awt.*; import java.rmi.*; public class HelloApplet extends java.applet.Applet { String message = ""; public void init() { try { Hello obj = (Hello)Naming.lookup("//" + getCodeBase().getHost() + "/HelloServer"); message = obj.sayHello(); } catch (Exception e) { System.out.println("HelloApplet exception: " + e.getMessage()); e.printStackTrace(); } } public void paint(Graphics g) { g.drawString(message, 25, 50); } } dgtgrade@SPARCS.KAIST.ac.kr

  22. Generate Stubs and Skeletons • rmic • rmic -d $HOME/public_html/codebase examples.hello.HelloImpl • it makes two files • HelloImpl_Stub.class • HelloImpl_Skel.class dgtgrade@SPARCS.KAIST.ac.kr

  23. Start Registry and Server • Start registry • rmiregistry & • rmiregistry 2001 & • must stop and restart the registry any time you modify a remote interface, etc. • Launch the server • java HelloImpl & dgtgrade@SPARCS.KAIST.ac.kr

  24. Talking to registry Server Client lookup() where’s Hello Hello Client Registry Hello is here HelloImpl_Stub.class Send the stub Stub Here’s the Stub HelloImpl_Skel.class sayHello() HelloImpl.class “Hello” dgtgrade@SPARCS.KAIST.ac.kr

  25. References • Java Network Programming • Elliotte Rusty Harold, 1997 O’REILLY • JDK1.1.3 Documentation • JavaSoft, 1997, JavaSoft • www.javasoft.com/ • Client/Server Programming with JAVA and CORBA • Robert Orfali •Dan Harkey, 1997, WILLEY dgtgrade@SPARCS.KAIST.ac.kr

More Related