1 / 19

Example: RMI Program

Example: RMI Program. How to write it. Program an ATM Machine. Allow the client to withdraw, deposit, transfer money to or from their account Also allow to obtain the current balance Some other stuff ATM machine is the client Bank with Account is the server. Write the code.

jamil
Download Presentation

Example: RMI Program

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. Example: RMI Program How to write it

  2. Program an ATM Machine • Allow the client to withdraw, deposit, transfer money to or from their account • Also allow to obtain the current balance • Some other stuff • ATM machine is the client • Bank with Account is the server

  3. Write the code • Write the Remote Interface, call it Account • Write the implementation: AccountImpl • Write the server: RegAccount • Write the client: AccountImpl • Stubs and skeletons will be generated

  4. Account.java

  5. Remarks • Note that Account extends Remote • Every remote method in the interface throws a RemoteException • This interface is present on the server and on the client

  6. AccountImpl.java

  7. AccountImpl.java (ctd)

  8. Remarks • Since this class is remote it must implement the UnicastRemote interface • The concrete methods from the remote interface all must throw a RemoteException • The rest is just POJ (Plain old Java)

  9. Define the Server • Make an instance whose methods will be called by the client • Register this object with the registry • Note that it contains the main{} that defines the server • No remote exceptions here

  10. RegAccount.java

  11. Write the Client:AccountClient.java • Need a Security Manager (later) • Get a stub from the server by Naming.lookup() • Make the remote calls--here getName() and getBalance() • The URL parameter to the lookup routine returns the remote object it references • main(){} here is the client.

  12. AccountClient.java

  13. Running the Example ATM • Compile the java files: javac Account*.java • Create stub from AccountImpl: rmic AccountImpl • Start the registry: rmiregistry • Start the server: java RegAccount • Start the client: java AccountClient

  14. What is Missing • A Security Manager • A Security Policy • A Codebase • Compile and Execution commands that incorporate these • An appropriate deployment strategy

  15. Security Manager • If your application only runs locally (sandbox) then there is no need for security • But RMI is designed to run on networks and the Internet • Hence the need for security • The Security Manager is a Java class that checks whether certain operations are permitted • Is available under java.lang.SecurityManager

  16. Security Manager (ctd) • Checks permissions according to a security policy • Infractions of permissions cause a SecurityException • Set up by issuing: System.setSecurityManager (new RMISecurityManager()); • Enclose critical code in try block

  17. Permissions • Set by a security policy as written by the programmer • For purposes of testing a blanket granting of permissions can be issued: permission java.security.AllPermission; • Then after deploying be a bit more restrictive: grant{ permission java.net.SocketPermission “*:1024-65535”, “connect, accept, resolve”; permission java.net.SocketPermission “*:80”, “connect”; };

  18. Codebase • When starting the server indicate the download directory by means of a codebase property: For example java -D ... - Djava.rmi.server.codebase=http://localhost/download/ xxxServ This represents the URL location from which the stubs can be downloaded Note the final slash “/” on the URL

  19. Running the Client • Need to include security with -D • Start the Client: • java -Dsecurity.policy=sec.policy xxxClient • sec.policy needs a path • Do this for both server and client

More Related