Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Case Study A Global Compute Engine Here we will discuss some implementation details: – – – Class Loaders Compute Engine Security Managers Refer to Chapter 6 of the book “Distributed Programming with Java” for more details Copyright © 2001 Qusay H. Mahmoud Class Loaders Java is a dynamic language capable of loading classes as they are needed (locally or from a remote machine) Classes are introduced in the Java environment when they are referenced by name in a running class The first class that gets to run is the one with main() Future attempt at loading classes is carried out by the class loader Copyright © 2001 Qusay H. Mahmoud Class Loaders java.lang.ClassLoader is an abstract class It provides a number of methods, e.g.: – – – – defineClass: converts an array of bytes to an instance of Class (final) findSystemClass: find the system class with the specified name (final) loadClass: resolve the specified name to a class or load a class (abstract) Refer to docs for exact method signatures…. Copyright © 2001 Qusay H. Mahmoud Class Loaders When working with class loaders: – – – – loadClass(String, boolean) must be defined by a subclass of ClassLoader. If the flag is set to true, then the method should call the resolveClass defineClass converts an byte b[] to an instance of Class. It must be resolved before used to determine if any referenced classes are to be defined The system class loaded by the findSystemClass method is from the local file system To avoid loading the same class more than once, use a hashtable Copyright © 2001 Qusay H. Mahmoud Building a network class loader public class NetClassLoader extends ClassLoader { } Provide impl’n for loadClass(String, boolean) – – – – – – Verify the class name Check if the class request has already been loaded Check if class is a system class Define the class for the JVM Resolve the class Return the class to the caller Copyright © 2001 Qusay H. Mahmoud Network Class Loader Hidden issue: inability to cast an object created from a loaded class into its original class. The object to be returned needs to be casted. Example: NetClassLoader ncl = new NetClassLoader(); Object o; Class c; c = ncl.loadClass(“Hello”); o = c.newInstance(); ((Hello)o).someMethod(); // this is a problem Copyright © 2001 Qusay H. Mahmoud Network Class Loader Solutions: Have the loaded class extends an abstract class – Have the loaded class implements an interface public interface Compute { void run(); } If a class is to be loaded by the NetClassLoader, it must implement the Compute interface – Use Reflections APIs (explore this) – Copyright © 2001 Qusay H. Mahmoud Network Class Loader Example: – – – – NetClassLoader.java Compute.java Fetch.java HelloTest.java For the latest info on network class loaders, see: http://java.sun.com/developer/technicalArticles/Networ king/classloaders/ Copyright © 2001 Qusay H. Mahmoud Compute Engine Responsible for loading a remote client class It receives the URL of the class to be loaded then it uses the network class loader to load the class and all its associated classes Collects the output and sends it back to the client Security: how to protect the compute engine’s host file system from malicious client’s code?? Copyright © 2001 Qusay H. Mahmoud