OBJECTSPACE VOYAGER CORE TECHNOLOGY

Size: px
Start display at page:

Download "OBJECTSPACE VOYAGER CORE TECHNOLOGY"

Transcription

1 OBJECTSPACE VOYAGER CORE TECHNOLOGY THE AGENT ORB FOR JAVA Voyager and RMI Comparison This paper compares Version 1.0 of the ObjectSpace Voyager Core Technology (Voyager) with JavaSoft s RMI product. Voyager is a full-featured, intuitive object request broker (ORB) that has support for mobile objects and autonomous agents. Voyager also includes services for persistence, scalable group communication, and basic directory service. This core Voyager technology is free for most commercial uses. RMI which stands for remote method invocation is the first commercially available system to attempt to more closely mirror the Java language. RMI is part of the JDK 1.1 and is also free for most commercial use. This text presents a high-level comparison of Voyager and RMI. A table summarizing each product s features is presented first, followed by a more detailed explanation of each feature ObjectSpace, Inc. All rights reserved Version 1.0 September 1997

2 Contents Overview...3 Remote-Enabling a Class...5 Constructing a Remote Object...6 Exporting a Named Remote Object...7 Connecting to a Named Object...8 Exception Handling...9 Executing a Remote Static Method...10 Object Mobility...11 Agents...12 Distributed Persistence...13 Scalability...14 Multicast Messaging...15 Distributed Events...16 Publish/Subscribe...17 Federated Directory Service...18 Message Types...19 Evolution of Remote References...20 Garbage Collection...21 Applet Connectivity...22 Network Class Loading...23 Product Size...24 Performance...25 Stubs and Skeletons

3 Overview Because ORBs such as CORBA and DCOM are designed to work across languages, they are unable to leverage the full power of Java. CORBA users know first-hand that mapping.idl constructs into the Java language is clumsy and unnatural at best. JavaSoft addresses this problem with the RMI product, included as part of JDK 1.1. By making a free, basic ORB available, JavaSoft sets the baseline for subsequent competitive efforts. ObjectSpace responds with the ObjectSpace Voyager Core Technology, an advanced, 100% Java ORB designed as a Java-centric distributed computing platform. We believe Voyager surpasses RMI s ORB capabilities in terms of ease of use and features without sacrificing performance. The following table summarizes Voyager and RMI features. Each feature is described in detail after this summary. 3

4 Feature ObjectSpace Voyager RMI Cost Free to most developers Free to most developers Constructing a remote object Supported via regular Java syntax Not supported Remote-enabling a class Requires one simple step Requires five tedious steps Exporting a named object Seamlessly integrated Requires external registry Connecting to a named object Seamlessly integrated Requires external registry Exception handling Explicit or run-time exceptions allowed Only explicit exceptions allowed Executing a remote static method Object mobility Agents Distributed persistence Scalability Multicast messaging Distributed events Publish/subscribe Federated directory service Message types Supported via regular Java syntax Fully supported, even when objects are active Can execute as they move and can move themselves Supported with a transparent, default database Requires no modification of your classes Autoload and autoflush supported Global-scale, fault-tolerant, persistent, distributed computing supported with innovative Space architecture Fully supported 100% nonintrusive Compliant with JavaBeans 100% nonintrusive Messages and events supported 100% nonintrusive Fully supported Integrated with the persistence subsystem Synchronous, one-way, one-way multicast, and future messages supported via smart, lightweight messenger agents Not supported Not supported Not supported Not supported No similar features Not supported Not supported Not supported Not supported Only synchronous messages supported Evolution of classes Supported Not supported Garbage collection Lease- and time-based garbage collection supported Applet connectivity Unrestricted Restricted Only lease-based garbage collection supported Network class loading Built-in Requires Web server Product size About 270KB About 180KB Performance See Performance on page 25 of this document. Stubs and skeletons 80% less support code generated than RMI 400% more support code generated than Voyager 4

5 Remote-Enabling a Class The following steps are required to enable an existing class for remote method invocation in RMI. 1. Create an interface that extends Remote and redeclare every public nonstatic function. 2. Add RemoteException to every method signature. 3. Modify the existing class to implement the interface and extend UnicastRemoteObject. 4. Add throws RemoteException to every method implementation. 5. Modify each method that takes or returns an implementation to use a remote interface instead. Note that constructors do not appear in the interface. The RMI documentation recommends that you do not override hashcode(), equals(), or tostring() in your implementation because each is defined to work correctly in a superclass of UnicastRemoteObject. Another restriction is that instances of classes defined as Remote cannot be passed by value. Therefore, if you define a RemoteVector class and pass it as an argument, a remote reference to the vector is always passed rather than a copy of the vector. This is not always the desired effect. To enable an existing class for remote method invocation in Voyager, simply run vcc on the.class or.java file to produce a virtual version of the class. The name of the virtual class is equal to the original class name preceded by the letter V. The virtual class implements the same interfaces as the original class, as well as a superset of its constructors and methods. You need not modify the original class in any way you do not even need access to its source code. This means that you can effortlessly enable any third-party library class for remote method invocation. For example, use the following command to remote enable a JDK Vector and create VVector: vcc java.util.vector 5

6 Constructing a Remote Object RMI does not directly support remote object construction. However, you can emulate this feature using the following steps. 1. In advance, construct a custom factory object on the server. 2. Pass the name of the class and the URL of the codebase to the factory object. Then, to create a remote instance, program the factory object to perform the following actions. 1. Use RMIClassLoader to load the class across the network 2. Use reflection to construct a remote instance using the default constructor This method of constructing a remote object works with the default constructor only. To construct an object using parameters is considerably more work. Voyager is designed to make remote construction effortless. Use regular Java construction syntax to construct a remote object and supply a destination address as an additional argument. For example, use the following commands to create a remote JDK Vector in a program on tokyo:8000 and add two elements: VVector vector = new VVector( "tokyo:8000" ); vector.addelement( new Integer( 42 ) ); vector.addelement( "voyager" ); 6

7 Exporting a Named Remote Object RMI includes a registry service for binding an object to an alias, then retrieving the object via its alias. To create an object in a server and then export the object for use by remote clients, the following steps are required. 1. Start an rmiregistry process on the server. 2. Create the object on the server. 3. Bind the object to an alias. Voyager includes an integrated directory service that allows you to associate an object with an alias without the need for a separate registry process. To create an object in a program and then export the object for use by remote clients, simply construct the object in the program and supply its alias during construction. For example, to create a remote JDK Vector with alias MyVector in a program on tokyo:9000, use the following command: VVector vector = new VVector( "tokyo:9000/myvector" ); Voyager s integrated directory service supports most simple use cases. Voyager also includes a federated directory service, described on page 18. 7

8 Connecting to a Named Object To connect to an object using its alias in RMI, first perform a lookup using the object s name, and then cast the returned remote reference to the correct type. To connect to an object using its alias in Voyager, use the static method VObject.forObjectAt(); then, cast the returned virtual reference to the correct type. For example, use the following commands to connect to an existing remote JDK Vector with alias MyVector in a program on tokyo:9000: VVector vector = (VVector) VObject.forObjectAt( "tokyo:9000/myvector" ); 8

9 Exception Handling RMI approaches exception handling by forcing developers to program safely. Every remote method invocation in a try..catch block must be explicitly wrapped, even if the communicating objects are on the same machine or on the same virtual machine. Voyager supports a superset of the RMI exception handling strategy. By default, every function in a virtual class throws a VoyagerException that must be wrapped with an explicit try..catch block. This exception does not have to be declared in the original class. To process a class that implements an interface whose methods do not explicitly throw a VoyagerException (such as java.util.eventlistener or java.applet), you can use vcc with the -r option. This causes each VoyagerException to be wrapped and rethrown as a VoyagerRuntimeException. Unlike RMI, all remote Voyager exceptions are automatically annotated with useful trace information to assist in remote debugging. 9

10 Executing a Remote Static Method Because RMI deals exclusively with interfaces, RMI has no support for executing a remote static method. To execute a remote static method in Voyager, invoke the method and supply the destination address as an additional argument. For example, use the following command to execute the static function Account.getNumberOfAccounts() in a program on tokyo:9000: int count = VAccount.getNumberOfAccounts( "tokyo:9000" ); 10

11 Object Mobility RMI does not support object mobility. Once created, an object remains on the same machine for its lifetime. Voyager allows any serializable object to move to a new program, even while the object is receiving remote messages. By default, messages sent to the object s old location are automatically forwarded to the new location. The new location is attached to the return value so that subsequent messages are delivered directly to the object at its new location. Use the following commands to connect to the Vector with alias MyVector in a program on tokyo:9000, and then move MyVector to a program on dallas:8000: VVector vector = (VVector) VObject.forObjectAt( "tokyo:9000/myvector" ); vector.moveto( "dallas:8000" ); 11

12 Agents RMI does not support mobile agents. Voyager allows a developer to create in minutes an agent that continues to execute as it moves between programs. An agent can independently move to a remote object and get a local reference to the object to communicate using high-speed, local messaging. An agent can move to an object even if the object is moving. 12

13 Distributed Persistence RMI does not include seamless integration for persistence of objects. Voyager includes seamless support for object persistence. In many cases, you can persist an object without modifying its source in any way. Every Voyager program can be associated with a database. The type of database can vary from program to program and is transparent to a Voyager programmer. Voyager includes a high-performance object storage system called VoyagerDb and will soon include bindings that work with most popular relational and object databases as well. To save an object to its program s database, send savenow()to the object. This method causes a copy of the object to be written to the database, overwriting the previous copy if one exists. If the program is shut down and then restarted, the persistent object remains in the database. An attempt to communicate with the persistent object causes the object to be immediately reloaded from the database. If a persistent object is moved from one program to another, the persistent copy of the object is automatically removed from the source program s database and added to the To conserve memory, you can use one of the flush() family of methods to flush a persistent object from memory to a database. A subsequent attempt to communicate with a flushed persistent object causes the object to be immediately reloaded from the database. By default, Voyager s database system persists Java classes that are loaded into a program across a network so they need not be reloaded when the program is restarted. 13

14 Scalability RMI does not include a scalable architecture for multicast messaging, distributed events, or publish/subscribe. Many distributed systems like those listed below require features for communicating with groups of objects. Stock quote systems use a distributed event feature to send stock price events to customers around the world. A voting system uses a distributed messaging feature (multicast messaging) to send messages to voters around the world and ask them for their views on a particular matter. News services use a distributed publish/subscribe feature to ensure each broadcast is received only by readers interested in the topic of the broadcast. Most traditional systems use a single repeater object to replicate a message or event to each object in the target group. This approach works fine if few objects reside in the target group, but does not scale well when large numbers of objects are involved. Voyager uses an innovative architecture for message and event replication called Space that can scale to global proportions. Clusters of objects in the target group are stored in local groups called subspaces. The subspaces are linked together across a network to form a larger logical group, or Space. When a message or event is sent into one of the subspaces in a Space, the message or event is cloned to each of the other subspaces in the Space before being delivered to every object in every subspace. This results in a very rapid, parallel fanout of the message or event to every object in the Space. A special mechanism in each subspace ensures that no message or event is accidentally processed more than once, regardless of how the subspaces are linked together. Voyager s multicast messaging, distributed events, and publish/subscribe features all use and benefit from the same underlying Space architecture. 14

15 Multicast Messaging RMI does not support multicast messaging, although the RMI user documentation suggests a technique that might be used to implement it. The documentation also mentions that a future version of RMI will include MulticastRemoteObject, an alternative to UnicastRemoteObject. That is, if you want to create a class that you can multicast messages to, you must extend MulticastRemoteObject instead of UnicastRemoteObject. We believe this technique is an example of poor objectoriented design the implementation of an object is coupled with how the object is used. Voyager includes seamless support for large-scale multicast messaging that does not require modifying your classes in any way. To perform multicast messaging, add objects to a Space, establish a virtual reference to the Space, and send the Space a message as if you were sending it to a single object. The message is propagated in a fault-tolerant and parallel fashion to every object in the Space. Use the commands below to create two sports fans, and then add them to the sports Space: VSportsFan fan1 = new VSportsFan( "localhost" ); VSportsFan fan2 = new VSportsFan( "localhost" ); sports.add( fan1 ); sports.add( fan2 ); To send every sports fan in the sports Space a one-way score() message, use the following commands: VSportsFan fans = new VSportsFan( space ); // attach to space fans.score( "bulls", 40, "lakers", 50 ); // multicast 15

16 Distributed Events RMI does not support distributed events. Voyager includes seamless support for large-scale, distributed JavaBeans events. To send an event to a group of objects, first process the event listener class using vcc. Then add the group of objects to a Space and attach the appropriate virtual event listener to the Space. Finally, add the virtual event listener to the event source. When an event is sent to the virtual event listener, the event is sent to every object in the Space that implements the appropriate event listener interface. The Voyager events system allows you to send any JavaBeans event to a network of distributed listeners without modifying the bean in any way. For example, assume that the SportsFan class implements a NewsEventListener interface that accepts a NewsEvent via the newsflash() method. Use the following commands to create two sports fans and then add them to the sports Space: VSportsFan fan1 = new VSportsFan( "localhost" ); VSportsFan fan2 = new VSportsFan( "localhost" ); sports.add( fan1 ); sports.add( fan2 ); Use the following commands to send every sports fan in the sports Space a NewsEvent: VNewsEventListener fans = new VNewsEventListener( space ); NewsEvent event = new NewsEvent( "the cowboys win!" ); fans.newsflash( event ); // send event to every fan in space 16

17 Publish/Subscribe RMI does not support publish/subscribe capabilities. Voyager includes seamless support for large-scale, distributed publish/subscribe of messages and events. To send a message or event to all objects in a Space that are interested in a particular subject, use a OneWayMulticast message with a selector. All objects in the Space that are registered subscribers of the selected subject receive the message or event. To register an object with a particular subject, use Voyager s built-in property mechanism. The Voyager publish/subscribe feature is 100% nonintrusive, supports wildcards, and does not require modifying the communicating objects in any way. For example, to create a sports fan and register its interest in the Bulls and Mavericks scores being broadcast in the sports Space, use the following commands: VSportsFan fan = new VSportsFan( "localhost" ); fan.addproperty( Subscription.SUBSCRIBE, "scores.bulls" ); fan.addproperty( Subscription.SUBSCRIBE, "scores.mavericks" ); sports.add( fan ); Use the commands below to publish Bulls and Lakers scores in the sports Space: VSportsFan fans = new VSportsFan( space ); // attach to space Subscription subscription = new Subscription(); subscription.addsubject( "scores.bulls" ); subscription.addsubject( "scores.lakers" ); Messenger m = new OneWayMulticast( subscription ); fans.score( "bulls", 40, "lakers", 50, m ); // publish 17

18 Federated Directory Service RMI does not support federated directories. Voyager includes a directory service that allows you to create and connect network directories to form a large, federated directory service. You can associate an object with a hierarchical name, such as sports/basketball/lakers or chemistry/symbols/calcium. The federated directory service is fully integrated with Voyager s persistence subsystem. 18

19 Message Types RMI supports synchronous messages only. Voyager supports four different message types: synchronous, one-way, one-way multicast, and future messages. By default, Voyager messages are synchronous (the sender blocks until the message completes and the return value is received). Voyager also supports one-way messages (the sender discards the result), future messages (the sender returns immediately with a placeholder that allows the result to be retrieved later), and one-way multicast messages (the message is sent to all objects in a Space). You can also send a one-way multicast message to only certain objects in a group by using a selector. Voyager method invocations are performed by smart messengers, which are lightweight, active objects rather than passive data structures. Smart messengers can route themselves, resend themselves, take actions on failures, and so on. Source code licensees can create customized messengers without modifying the core system. Voyager also supports dynamic message creation. You can set a messenger s signature and arguments at run time before a message is sent. This is a powerful feature that can be used for many purposes; for example, you can easily create a scheduler that sends a usersupplied message to any kind of object at a particular point in time. 19

20 Evolution of Remote References When the RMI rmic compiler generates client and server stubs, it associates hardcoded numbers with each function; that is, foo() might be associated with 1, bar() might be associated with 2, and so on. These numbers are used by the client stub to remotely activate a function via the server stub. Thus, if you deploy a class remotely and then modify its class, you might be unable to use the new client stub to communicate with older instances of the class. The only recourse at this point is to shut down and restart the entire system. RMI, therefore, does not support evolution of remote references in a network environment. When used to generate client stubs, the Voyager vcc utility embeds method signatures in the virtual class instead of hardcoded numbers. These signatures are used by the reflection mechanism on the server to find and execute a remote method. Therefore, if you deploy a class remotely and then modify its class, you can continue to execute methods on older instances of the class using the new virtual class. Voyager, therefore, supports smooth evolution of remote references in a network environment. 20

21 Garbage Collection RMI has a lease-based garbage collection system. When a client obtains a reference to a remote object, the client is granted a lease that must be renewed periodically to prevent the remote object from being garbage-collected. A remote object is garbage-collected when all its leases expire. Voyager offers a superset of the RMI garbage collection system that supports both leasebased and time-based garbage collection. An object s life span can be defined based on a specific length of time or a particular point in time. The object is garbage-collected at the end of its life span. Time-based garbage collection is often used to create roaming agents that automatically self-destruct in a few days. Voyager s garbage collection system is fully integrated with its support for persistence thus correctly garbage-collects persistent objects. 21

22 Applet Connectivity Most browsers allow an applet to open a socket connection only to its server. This means that in the absence of any higher-level routing mechanism, an applet can only communicate with objects located on the same server. RMI has no additional routing mechanism thus is subject to this limitation. Voyager includes a lightweight software router that allows both applet-to-applet and applet-to-program connectivity. An object inside an applet can communicate with another object no matter where each object resides. That is, an object can communicate with objects in another applet, whether the applet is on the same server or on a different server, firewalls permitting. 22

23 Network Class Loading For an RMI program to act as a source for classes that can be loaded across the network, the program must be running an HTTP server. Although reasonable when the client is an applet accessed from a Web site, this requirement is clumsy in other cases. For example, to build an intranet system in which the server program is running an internal Windows NT system, you would have to install an HTTP server on the Windows NT machine, even though the machine does not actually service the Web. JavaSoft supplies developers with a mini-web server to overcome this difficulty. Voyager programs can transmit classes to other Voyager programs using regular socket connections. Therefore, you need not install any additional software to write programs that make full use of Java s code mobility, which results in much simpler deployment of Voyager programs. 23

24 Product Size RMI s total class file size is approximately 180KB. This includes all primary RMI.class files, the registry, and the distributed garbage collection system, but excludes the HTTP firewall support. Voyager s total class file size is approximately 270KB. This includes the entire Voyager system the integrated directory service, the distributed garbage collection system, smart messengers, mobility, and agent support. 24

25 Performance The table below lists a few benchmarks that compare RMI and Voyager performance on remote method calls between objects on the same virtual machine and between objects on different virtual machines. Each function was defined to take a specific kind of argument and to perform no operation. The benchmarks were performed on a 150Mhz Tecra laptop with 80MB of RAM. Times are in milliseconds per function call. The following interface definition was used. package benchmarks; import java.util.vector; import java.rmi.*; public interface IServer extends Remote { public void noarguments() throws RemoteException; public int twoints( int a, int b ) throws RemoteException; public int vectorintegers( Vector integers ) throws RemoteException; public int vectorstrings( Vector strings ) throws RemoteException; } No Arguments Two Integers Vector of 100 Integers Vector of 100 Strings Same Virtual Machine RMI Voyager Different Virtual Machines RMI Voyager

26 Stubs and Skeletons RMI and Voyager each use a utility to generate custom code for remote method invocation. RMI generates both client code and server code, whereas Voyager generates client code only. This section shows the code that each product generates for the twoints() method of the following interface. public interface IServer extends Remote { public void noarguments() throws RemoteException; public int twoints( int a, int b ) throws RemoteException; public int vectorintegers( Vector integers ) throws RemoteException; public int vectorstrings( Vector strings ) throws RemoteException; } As the following code examples demonstrate, Voyager typically emits 80 percent less support code than RMI. 26

27 Stub code generated by twoints(): // Implementation of twoints public int twoints(int $_int_1, int $_int_2) throws java.rmi.remoteexception { int opnum = 1; java.rmi.server.remoteref sub = ref; java.rmi.server.remotecall call = sub.newcall((java.rmi.server.remoteobject)this, operations, opnum, interfacehash); try { java.io.objectoutput out = call.getoutputstream(); out.writeint($_int_1); out.writeint($_int_2); } catch (java.io.ioexception ex) { throw new java.rmi.marshalexception("error marshaling arguments", ex); }; try { sub.invoke(call); } catch (java.rmi.remoteexception ex) { throw ex; } catch (java.lang.exception ex) { throw new java.rmi.unexpectedexception("unexpected exception", ex); }; int $result; try { java.io.objectinput in = call.getinputstream(); $result = in.readint(); } catch (java.io.ioexception ex) { throw new java.rmi.unmarshalexception("error unmarshaling return", ex); } catch (Exception ex) { throw new java.rmi.unexpectedexception("unexpected exception", ex); } finally { sub.done(call); } return $result; } Skeleton code generated by twoints(): case 1: { // twoints int $_int_1; int $_int_2; try { java.io.objectinput in = call.getinputstream(); $_int_1 = in.readint(); $_int_2 = in.readint(); } catch (java.io.ioexception ex) { throw new java.rmi.unmarshalexception("error unmarshaling arguments", ex); } finally { call.releaseinputstream(); }; int $result = server.twoints($_int_1, $_int_2); try { java.io.objectoutput out = call.getresultstream(true); out.writeint($result); } catch (java.io.ioexception ex) { throw new java.rmi.marshalexception("error marshaling return", ex); }; break; } 27

28 Stub code generated by twoints(), default version: public Result twoints( int arg1, int arg2, Messenger messenger ) { messenger.writeint( arg1 ); messenger.writeint( arg2 ); return instancemethod( messenger, instance1 ); } Stub code generated by twoints(), smart messenger version: public int twoints( int arg1, int arg2 ) { return twoints( arg1, arg2, new Sync() ).readintruntime(); } There is no skeleton code for twoints()because Voyager does not require skeleton code on the server side. 28

29 For additional technical information on ObjectSpace products and programs or for information on how to order and evaluate ObjectSpace technology, contact us today! Java is a trademark of Sun Microsystems. ObjectSpace Voyager and Space are trademarks of ObjectSpace, Inc. All other trademarks are the property of their respective companies Quorum Drive, Suite 500 Dallas TX OBJECT.1 Fax: sales@objectspace.com Web: Dallas Austin Chicago San Francisco Washington DC 29

Distributed Systems. 5. Remote Method Invocation

Distributed Systems. 5. Remote Method Invocation Distributed Systems 5. Remote Method Invocation Werner Nutt 1 Remote Method Invocation 5.1 Communication between Distributed Objects 1. Communication between Distributed Objects 2. RMI 2 Middleware Middleware

More information

Remote Method Invocation

Remote Method Invocation Remote Method Invocation A true distributed computing application interface for Java, written to provide easy access to objects existing on remote virtual machines Provide access to objects existing on

More information

JAVA RMI. Remote Method Invocation

JAVA RMI. Remote Method Invocation 1 JAVA RMI Remote Method Invocation 2 Overview Java RMI is a mechanism that allows one to invoke a method on an object that exists in another address space. The other address space could be: On the same

More information

Distributed Systems. 6. Remote Method Invocation. Werner Nutt

Distributed Systems. 6. Remote Method Invocation. Werner Nutt Distributed Systems 6. Remote Method Invocation Werner Nutt 1 Remote Method Invocation 6.1 Communication between Distributed Objects 1. Communication between Distributed Objects 2. Java RMI 3. Dynamic

More information

Written by: Dave Matuszek

Written by: Dave Matuszek RMI Remote Method Invocation Written by: Dave Matuszek appeared originally at: http://www.cis.upenn.edu/~matuszek/cit597-2003/ 28-May-07 The network is the computer * Consider the following program organization:

More information

Outline. EEC-681/781 Distributed Computing Systems. The OSI Network Architecture. Inter-Process Communications (IPC) Lecture 4

Outline. EEC-681/781 Distributed Computing Systems. The OSI Network Architecture. Inter-Process Communications (IPC) Lecture 4 EEC-681/781 Distributed Computing Systems Lecture 4 Department of Electrical and Computer Engineering Cleveland State University wenbing@ieee.org Outline Inter-process communications Computer networks

More information

Desarrollo de Aplicaciones en Red RMI. Introduction. Considerations. Considerations. RMI architecture

Desarrollo de Aplicaciones en Red RMI. Introduction. Considerations. Considerations. RMI architecture session Desarrollo de Aplicaciones en Red José Rafael Rojano Cáceres http://www.uv.mx/rrojano RMI Remote Method Invocation Introduction Java RMI let s work calling remote methods. Underneath it works with

More information

RMI. Remote Method Invocation. 16-Dec-16

RMI. Remote Method Invocation. 16-Dec-16 RMI Remote Method Invocation 16-Dec-16 The network is the computer Consider the following program organization: method SomeClass call AnotherClass returned object computer 1 computer 2 If the network is

More information

RMI (Remote Method Invocation) Over the year, there have been 3 different approaches to application development:

RMI (Remote Method Invocation) Over the year, there have been 3 different approaches to application development: RMI (Remote Method Invocation) History: Over the year, there have been 3 different approaches to application development: 1. the traditional approach. 2. the client / server approach and 3. the component-

More information

RPC flow. 4.3 Remote procedure calls IDL. RPC components. Procedure. Program. sum (j,k) int j,k; {return j+k;} i = sum (3,7); Local procedure call

RPC flow. 4.3 Remote procedure calls IDL. RPC components. Procedure. Program. sum (j,k) int j,k; {return j+k;} i = sum (3,7); Local procedure call 4.3 Remote procedure calls RPC flow Client process Server process Program i = sum (3,7); Procedure sum (j,k) int j,k; {return j+k; Client stub Program Return Call Unpack Pack result para s Invisible to

More information

5.4. Events and notifications

5.4. Events and notifications 5.4. Events and notifications Distributed event-based systems extend local event model Allowing multiple objects at diff. locations to be notified of events taking place at an object Two characteristics:

More information

Message Passing vs. Distributed Objects. 5/15/2009 Distributed Computing, M. L. Liu 1

Message Passing vs. Distributed Objects. 5/15/2009 Distributed Computing, M. L. Liu 1 Message Passing vs. Distributed Objects 5/15/2009 Distributed Computing, M. L. Liu 1 Distributed Objects M. L. Liu 5/15/2009 Distributed Computing, M. L. Liu 2 Message Passing versus Distributed Objects

More information

Object Interaction. Object Interaction. Introduction. Object Interaction vs. RPCs (2)

Object Interaction. Object Interaction. Introduction. Object Interaction vs. RPCs (2) Introduction Objective To support interoperability and portability of distributed OO applications by provision of enabling technology Object interaction vs RPC Java Remote Method Invocation (RMI) RMI Registry

More information

Distributed Programming with RMI. Overview CORBA DCOM. Prepared By: Shiba R. Tamrakar

Distributed Programming with RMI. Overview CORBA DCOM. Prepared By: Shiba R. Tamrakar Distributed Programming with RMI Overview Distributed object computing extends an object-oriented programming system by allowing objects to be distributed across a heterogeneous network, so that each of

More information

RMI. (Remote Method Invocation)

RMI. (Remote Method Invocation) RMI (Remote Method Invocation) Topics What is RMI? Why RMI? Architectural components Serialization & Marshaled Objects Dynamic class loading Code movement Codebase ClassLoader delegation RMI Security Writing

More information

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University CS 555: DISTRIBUTED SYSTEMS [RMI] Frequently asked questions from the previous class survey Shrideep Pallickara Computer Science Colorado State University L21.1 L21.2 Topics covered in this lecture RMI

More information

Distributed Programming in Java. Distribution (2)

Distributed Programming in Java. Distribution (2) Distributed Programming in Java Distribution (2) Remote Method Invocation Remote Method Invocation (RMI) Primary design goal for RMI is transparency Should be able to invoke remote objects with same syntax

More information

Chapter 15: Distributed Communication. Sockets Remote Procedure Calls (RPCs) Remote Method Invocation (RMI) CORBA Object Registration

Chapter 15: Distributed Communication. Sockets Remote Procedure Calls (RPCs) Remote Method Invocation (RMI) CORBA Object Registration Chapter 15: Distributed Communication Sockets Remote Procedure Calls (RPCs) Remote Method Invocation (RMI) CORBA Object Registration Sockets Defined as an endpoint for communcation Concatenation of IP

More information

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications Distributed Objects and Remote Invocation Programming Models for Distributed Applications Extending Conventional Techniques The remote procedure call model is an extension of the conventional procedure

More information

JAVA RMI Java, summer semester

JAVA RMI Java, summer semester JAVA RMI Overview Remote Method Invocation usage of remote object objects in a different VM (on the same computer or over the network) as there would be local objects (almost) calls just take longer time

More information

RMI Example RMI. CmpE 473 Internet Programming RMI

RMI Example RMI. CmpE 473 Internet Programming RMI CmpE 473 Internet Programming Pınar Yolum pinar.yolum@boun.edu.tr Department of Computer Engineering Boğaziçi University RMI Examples from Advanced Java: Internet Applications, Art Gittleman Remote Method

More information

Lecture 5: Object Interaction: RMI and RPC

Lecture 5: Object Interaction: RMI and RPC 06-06798 Distributed Systems Lecture 5: Object Interaction: RMI and RPC Distributed Systems 1 Recap Message passing: send, receive synchronous versus asynchronous No global Time types of failure socket

More information

Lecture 06: Distributed Object

Lecture 06: Distributed Object Lecture 06: Distributed Object Distributed Systems Behzad Bordbar School of Computer Science, University of Birmingham, UK Lecture 0? 1 Recap Interprocess communication Synchronous and Asynchronous communication

More information

Remote Method Invocation in Java

Remote Method Invocation in Java Remote Method Invocation in Java Ajay Khatri Senior Assistant Professor,Department IT Acropolis Institute of Technology & Research ajay.acropolis@gmail.com What is RMI RMI is an API that provides a mechanism

More information

Advanced Java Programming

Advanced Java Programming Advanced Java Programming Length: 4 days Description: This course presents several advanced topics of the Java programming language, including Servlets, Object Serialization and Enterprise JavaBeans. In

More information

Distributed Systems. Distributed Object Systems 2 Java RMI. Java RMI. Example. Applet continued. Applet. slides2.pdf Sep 9,

Distributed Systems. Distributed Object Systems 2 Java RMI. Java RMI. Example. Applet continued. Applet. slides2.pdf Sep 9, Distributed Object Systems 2 Java RMI Piet van Oostrum Distributed Systems What should a distributed system provide? Illusion of one system while running on multiple systems Transparancy Issues Communication,

More information

Contents. Java RMI. Java RMI. Java RMI system elements. Example application processes/machines Client machine Process/Application A

Contents. Java RMI. Java RMI. Java RMI system elements. Example application processes/machines Client machine Process/Application A Contents Java RMI G53ACC Chris Greenhalgh Java RMI overview A Java RMI example Overview Walk-through Implementation notes Argument passing File requirements RPC issues and RMI Other problems with RMI 1

More information

Remote Procedure Call

Remote Procedure Call Remote Procedure Call Suited for Client-Server structure. Combines aspects of monitors and synchronous message passing: Module (remote object) exports operations, invoked with call. call blocks (delays

More information

The UNIVERSITY of EDINBURGH. SCHOOL of INFORMATICS. CS4/MSc. Distributed Systems. Björn Franke. Room 2414

The UNIVERSITY of EDINBURGH. SCHOOL of INFORMATICS. CS4/MSc. Distributed Systems. Björn Franke. Room 2414 The UNIVERSITY of EDINBURGH SCHOOL of INFORMATICS CS4/MSc Distributed Systems Björn Franke bfranke@inf.ed.ac.uk Room 2414 (Lecture 3: Remote Invocation and Distributed Objects, 28th September 2006) 1 Programming

More information

CS 5523 Operating Systems: Remote Objects and RMI

CS 5523 Operating Systems: Remote Objects and RMI CS 5523 Operating Systems: Remote Objects and RMI Instructor: Dr. Tongping Liu Thank Dr. Dakai Zhu and Dr. Palden Lama for providing their slides. Outline Distributed/Remote Objects Remote object reference

More information

Remote Objects and RMI

Remote Objects and RMI Outline Remote Objects and RMI Instructor: Dr. Tongping Liu Distributed/Remote Objects Remote object reference (ROR) Remote Method Invocation (RMI) Case study and example: Java RMI Other issues for objects

More information

JAC444 - Lecture 11. Remote Method Invocation Segment 2 - Develop RMI Application. Jordan Anastasiade Java Programming Language Course

JAC444 - Lecture 11. Remote Method Invocation Segment 2 - Develop RMI Application. Jordan Anastasiade Java Programming Language Course JAC444 - Lecture 11 Remote Method Invocation Segment 2 - Develop RMI Application 1 Remote Method Invocation In this lesson you will be learning about: Designing RMI application Developing distributed object

More information

Distributed Systems. The main method of distributed object communication is with remote method invocation

Distributed Systems. The main method of distributed object communication is with remote method invocation Distributed Systems Unit III Syllabus:Distributed Objects and Remote Invocation: Introduction, Communication between Distributed Objects- Object Model, Distributed Object Modal, Design Issues for RMI,

More information

Chapter 5 Distributed Objects and Remote Invocation

Chapter 5 Distributed Objects and Remote Invocation CSD511 Distributed Systems 分散式系統 Chapter 5 Distributed Objects and Remote Invocation 吳俊興 國立高雄大學資訊工程學系 Chapter 5 Distributed Objects and Remote Invocation 5.1 Introduction 5.2 Communication between distributed

More information

IBD Intergiciels et Bases de Données

IBD Intergiciels et Bases de Données IBD Intergiciels et Bases de Données RMI-based distributed systems Fabien Gaud, Fabien.Gaud@inrialpes.fr Overview of lectures and practical work Lectures Introduction to distributed systems and middleware

More information

RMI: Design & Implementation

RMI: Design & Implementation RMI: Design & Implementation Operating Systems RMI 1 Middleware layers Applications, services RMI and RPC request-reply protocol marshalling and external data representation Middleware layers UDP and TCP

More information

Introduction & RMI Basics. CS3524 Distributed Systems Lecture 01

Introduction & RMI Basics. CS3524 Distributed Systems Lecture 01 Introduction & RMI Basics CS3524 Distributed Systems Lecture 01 Distributed Information Systems Distributed System: A collection of autonomous computers linked by a network, with software to produce an

More information

Lecture VI: Distributed Objects. Remote Method Invocation

Lecture VI: Distributed Objects. Remote Method Invocation Lecture VI: Distributed Objects. Remote Method Invocation CMPT 401 Summer 2007 Dr. Alexandra Fedorova Remote Method Invocation In an object-oriented language (usually Java) A way to call a method on an

More information

RPC and RMI. 2501ICT Nathan

RPC and RMI. 2501ICT Nathan RPC and RMI 2501ICT Nathan Contents Client/Server revisited RPC Architecture XDR RMI Principles and Operation Case Studies Copyright 2002- René Hexel. 2 Client/Server Revisited Server Accepts commands

More information

Distributed Systems. 02r. Java RMI Programming Tutorial. Paul Krzyzanowski TA: Long Zhao Rutgers University Fall 2017

Distributed Systems. 02r. Java RMI Programming Tutorial. Paul Krzyzanowski TA: Long Zhao Rutgers University Fall 2017 Distributed Systems 02r. Java RMI Programming Tutorial Paul Krzyzanowski TA: Long Zhao Rutgers University Fall 2017 1 Java RMI RMI = Remote Method Invocation Allows a method to be invoked that resides

More information

5 Distributed Objects: The Java Approach

5 Distributed Objects: The Java Approach 5 Distributed Objects: The Java Approach Main Points Why distributed objects Distributed Object design points Java RMI Dynamic Code Loading 5.1 What s an Object? An Object is an autonomous entity having

More information

Verteilte Systeme (Distributed Systems)

Verteilte Systeme (Distributed Systems) Verteilte Systeme (Distributed Systems) Karl M. Göschka Karl.Goeschka@tuwien.ac.at http://www.infosys.tuwien.ac.at/teaching/courses/ VerteilteSysteme/ Lecture 3: Communication (Part 2) Remote Procedure

More information

Chapter 4 Remote Procedure Calls and Distributed Transactions

Chapter 4 Remote Procedure Calls and Distributed Transactions Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Geb. 36, Raum 329 Tel. 0631/205 3275 dessloch@informatik.uni-kl.de Chapter 4 Remote Procedure Calls and Distributed Transactions Outline

More information

Communication and Distributed Processing

Communication and Distributed Processing Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Geb. 36, Raum 329 Tel. 0631/205 3275 dessloch@informatik.uni-kl.de Chapter 4 Remote Procedure Calls and Distributed Transactions Outline

More information

presentation DAD Distributed Applications Development Cristian Toma

presentation DAD Distributed Applications Development Cristian Toma Lecture 8 S4 - Core Distributed Middleware Programming in JEE presentation DAD Distributed Applications Development Cristian Toma D.I.C.E/D.E.I.C Department of Economic Informatics & Cybernetics www.dice.ase.ro

More information

Last Class: Network Overview. Today: Distributed Systems

Last Class: Network Overview. Today: Distributed Systems Last Class: Network Overview =>Processes in a distributed system all communicate via a message exchange. Physical reality: packets Abstraction: messages limited size arbitrary size unordered (sometimes)

More information

Remote Method Invocation. Benoît Garbinato

Remote Method Invocation. Benoît Garbinato Remote Method Invocation Benoît Garbinato Fundamental idea (1) Rely on the same programming paradigm for distributed applications as for centralized applications In procedural languages, we will rely on

More information

15-498: Distributed Systems Project #1: Design and Implementation of a RMI Facility for Java

15-498: Distributed Systems Project #1: Design and Implementation of a RMI Facility for Java 15-498: Distributed Systems Project #1: Design and Implementation of a RMI Facility for Java Dates of Interest Assigned: During class, Friday, January 26, 2007 Due: 11:59PM, Friday, February 13, 2007 Credits

More information

Java WebStart, Applets & RMI

Java WebStart, Applets & RMI Java WebStart, Applets & RMI 11-13-2013 Java WebStart & Applets RMI Read: Java Web Start Tutorial Doing More with Rich Internet Applications Java Web Start guide Exam#2 is scheduled for Tues., Nov. 19,

More information

DISTRIBUTED OBJECTS AND REMOTE INVOCATION

DISTRIBUTED OBJECTS AND REMOTE INVOCATION DISTRIBUTED OBJECTS AND REMOTE INVOCATION Introduction This chapter is concerned with programming models for distributed applications... Familiar programming models have been extended to apply to distributed

More information

KINGS COLLEGE OF ENGINEERING DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING ACADEMIC YEAR (ODD SEMESTER) QUESTION BANK

KINGS COLLEGE OF ENGINEERING DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING ACADEMIC YEAR (ODD SEMESTER) QUESTION BANK KINGS COLLEGE OF ENGINEERING DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING ACADEMIC YEAR 2011 2012(ODD SEMESTER) QUESTION BANK SUBJECT CODE / NAME: IT1402-MIDDLEWARE TECHNOLOGIES YEAR/SEM : IV / VII UNIT

More information

Communication and Distributed Processing

Communication and Distributed Processing Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Geb. 36, Raum 329 Tel. 0631/205 3275 dessloch@informatik.uni-kl.de Chapter 4 Remote Procedure Calls and Distributed Transactions Outline

More information

Distributed Computing

Distributed Computing Distributed Computing Computing on many systems to solve one problem Why? - Combination of cheap processors often more cost-effective than one expensive fast system - Flexibility to add according to needs

More information

Course Snapshot. The Next Few Classes. Parallel versus Distributed Systems. Distributed Systems. We have covered all the fundamental OS components:

Course Snapshot. The Next Few Classes. Parallel versus Distributed Systems. Distributed Systems. We have covered all the fundamental OS components: Course Snapshot The Next Few Classes We have covered all the fundamental OS components: Architecture and OS interactions Processes and threads Synchronization and deadlock Process scheduling Memory management

More information

Questions and Answers. A. RMI allows us to invoke a method of java object that executes on another machine.

Questions and Answers. A. RMI allows us to invoke a method of java object that executes on another machine. Q.1) What is Remote method invocation (RMI)? A. RMI allows us to invoke a method of java object that executes on another machine. B. RMI allows us to invoke a method of java object that executes on another

More information

Bharati Vidyapeeth s Institute of Computer Applications and Management A-4, Paschim Vihar, New Delhi-63.

Bharati Vidyapeeth s Institute of Computer Applications and Management A-4, Paschim Vihar, New Delhi-63. Bharati Vidyapeeth s Institute of Computer Applications and Management A-4, Paschim Vihar, New Delhi-63. MCA III rd Semester Second Internal: Java Programming (MCA-205) Note: All the questions are compulsory.

More information

Course Snapshot. The Next Few Classes

Course Snapshot. The Next Few Classes Course Snapshot We have covered all the fundamental OS components: Architecture and OS interactions Processes and threads Synchronization and deadlock Process scheduling Memory management File systems

More information

Remote Method Invocation Benoît Garbinato

Remote Method Invocation Benoît Garbinato Remote Method Invocation Benoît Garbinato 1 Fundamental idea (1) Rely on the same programming paradigm for distributed applications as for centralized applications In procedural languages, we will rely

More information

Remote Invocation Vladimir Vlassov and Johan Montelius

Remote Invocation Vladimir Vlassov and Johan Montelius KTH ROYAL INSTITUTE OF TECHNOLOGY Middleware Remote Invocation Vladimir Vlassov and Johan Montelius Application layer Remote invocation / indirect communication Socket layer Network layer ID2201 DISTRIBUTED

More information

Distributed Systems COMP 212. Lecture 10 Othon Michail

Distributed Systems COMP 212. Lecture 10 Othon Michail Distributed Systems COMP 212 Lecture 10 Othon Michail RMI: Remote Method Invocation Allows an object running in one Java virtual machine to invoke methods on an object running in another Java virtual machine.

More information

Remote Method Invocation

Remote Method Invocation Remote Method Invocation RMI Dr. Syed Imtiyaz Hassan Assistant Professor, Deptt. of CSE, Jamia Hamdard (Deemed to be University), New Delhi, India. s.imtiyaz@jamiahamdard.ac.in 1 Agenda Introduction Creating

More information

As related works, OMG's CORBA (Common Object Request Broker Architecture)[2] has been developed for long years. CORBA was intended to realize interope

As related works, OMG's CORBA (Common Object Request Broker Architecture)[2] has been developed for long years. CORBA was intended to realize interope HORB: Distributed Execution of Java Programs HIRANO Satoshi Electrotechnical Laboratory and RingServer Project 1-1-4 Umezono Tsukuba, 305 Japan hirano@etl.go.jp http://ring.etl.go.jp/openlab/horb/ Abstract.

More information

Generic architecture

Generic architecture Java-RMI Lab Outline Let first builds a simple home-made framework This is useful to understand the main issues We see later how java-rmi works and how it solves the same issues Generic architecture object

More information

Grid Computing. Java Remote Method Invocation (RMI) RMI Application. Grid Computing Fall 2006 Paul A. Farrell 9/5/2006

Grid Computing. Java Remote Method Invocation (RMI) RMI Application. Grid Computing Fall 2006 Paul A. Farrell 9/5/2006 Grid Computing Paradigms for Distributed Computing 2 RMI Fall 2006 Traditional paradigms for distributed computing The Grid: Core Technologies Maozhen Li, Mark Baker John Wiley & Sons; 2005, ISBN 0-470-09417-6

More information

Distributed Objects SPL/ SPL 201 / 0 1

Distributed Objects SPL/ SPL 201 / 0 1 Distributed Objects 1 distributed objects objects which reside on different machines/ network architectures, benefits, drawbacks implementation of a remote object system 2 Why go distributed? large systems

More information

Java Remote Method Invocation Specification

Java Remote Method Invocation Specification Java Remote Method Invocation Specification Java Remote Method Invocation (RMI) is a distributed object model for the Java language that retains the semantics of the Java object model, making distributed

More information

Programming with RMI Reminder

Programming with RMI Reminder Programming with RMI Reminder (Sources: Gordon S Blair, Paul Grace) Aims After completing the following you should get a reminder of: 1. the fundamental concepts of Java Remote Method Invocation; 2. the

More information

Overview. Communication types and role of Middleware Remote Procedure Call (RPC) Message Oriented Communication Multicasting 2/36

Overview. Communication types and role of Middleware Remote Procedure Call (RPC) Message Oriented Communication Multicasting 2/36 Communication address calls class client communication declarations implementations interface java language littleendian machine message method multicast network object operations parameters passing procedure

More information

Remote Method Invocation

Remote Method Invocation Non-101samples available here: https://github.com/101companies/101repo/tree/master/languages/aspectj/javarmisamples Remote Method Invocation Prof. Dr. Ralf Lämmel Universität Koblenz-Landau Software Languages

More information

BEAWebLogic Server and WebLogic Express. Programming WebLogic JNDI

BEAWebLogic Server and WebLogic Express. Programming WebLogic JNDI BEAWebLogic Server and WebLogic Express Programming WebLogic JNDI Version 10.0 Document Revised: March 30, 2007 Contents 1. Introduction and Roadmap Document Scope and Audience.............................................

More information

Distributed Software Systems

Distributed Software Systems RMI Programming Distributed Software Systems RMI Programming RMI software Generated by IDL compiler Proxy Behaves like remote object to clients (invoker) Marshals arguments, forwards message to remote

More information

Chapter 4 Communication

Chapter 4 Communication DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S. TANENBAUM MAARTEN VAN STEEN Chapter 4 Communication Layered Protocols (1) Figure 4-1. Layers, interfaces, and protocols in the OSI

More information

How are classes loaded into the Java Virtual Machine (JVM)? from the local file system (CLASSPATH). by an instance of ClassLoader

How are classes loaded into the Java Virtual Machine (JVM)? from the local file system (CLASSPATH). by an instance of ClassLoader 36 ClassLoader How are classes loaded into the Java Virtual Machine (JVM)? from the local file system (CLASSPATH). by an instance of ClassLoader... and when? - When they are needed the first time. class

More information

BEAAquaLogic. Service Bus. Interoperability With EJB Transport

BEAAquaLogic. Service Bus. Interoperability With EJB Transport BEAAquaLogic Service Bus Interoperability With EJB Transport Version 3.0 Revised: February 2008 Contents EJB Transport Introduction...........................................................1-1 Invoking

More information

Department of Computer Science & Engineering. M.Tech(CSE)-I Year-II Semester WEB SERVICES AND SERVICE ORIENTED ARCHITECHTURE (B1513) Mr.K.

Department of Computer Science & Engineering. M.Tech(CSE)-I Year-II Semester WEB SERVICES AND SERVICE ORIENTED ARCHITECHTURE (B1513) Mr.K. Department of Computer Science & Engineering M.Tech(CSE)-I Year-II Semester WEB SERVICES AND SERVICE ORIENTED ARCHITECHTURE (B1513) By Mr.K.Yellaswamy Assistant Professor CMR College of Engineering & Technology,

More information

Info 408 Distributed Applications programming 2 nd semester of Credits: 5 Lecturer: Antoun Yaacoub Ph.D.

Info 408 Distributed Applications programming 2 nd semester of Credits: 5 Lecturer: Antoun Yaacoub Ph.D. Lebanese University Faculty of Sciences I Master 1 degree Computer Sciences Info 408 Distributed Applications programming 2 nd semester of 2018-2019 Credits: 5 Lecturer: Antoun Yaacoub Ph.D. RMI Serialization

More information

Electronic Payment Systems (1) E-cash

Electronic Payment Systems (1) E-cash Electronic Payment Systems (1) Payment systems based on direct payment between customer and merchant. a) Paying in cash. b) Using a check. c) Using a credit card. Lecture 24, page 1 E-cash The principle

More information

DS 2009: middleware. David Evans

DS 2009: middleware. David Evans DS 2009: middleware David Evans de239@cl.cam.ac.uk What is middleware? distributed applications middleware remote calls, method invocations, messages,... OS comms. interface sockets, IP,... layer between

More information

IJESRT. http: //

IJESRT. http: // IJESRT [Monika,1(4): Jun., 2012] INTERNATIONAL JOURNAL OF ENGINEERING SCIENCES & RESEARCH TECHNOLOGY Innovative Techniquee of Message Passing In Loosely Coupled System Monika Arya* Department of Computer

More information

Outline. Chapter 4 Remote Procedure Calls and Distributed Transactions. Remote Procedure Call. Distributed Transaction Processing.

Outline. Chapter 4 Remote Procedure Calls and Distributed Transactions. Remote Procedure Call. Distributed Transaction Processing. Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Geb. 36, Raum 329 Tel. 0631/205 3275 dessloch@informatik.uni-kl.de Chapter 4 Remote Procedure Calls and Distributed Transactions Outline

More information

THE RMI PROXY USER GUIDE

THE RMI PROXY USER GUIDE THE RMI PROXY USER GUIDE Copyright Telekinesis Pty Ltd, 2000, 2002. All rights reserved. 1 Introduction Java RMI allows Java programs executing within different Java Virtual Machines to communicate using

More information

BEA WebLogic. Server. Programming WebLogic RMI

BEA WebLogic. Server. Programming WebLogic RMI BEA WebLogic Server Programming WebLogic RMI Release 8.1 Document Revised: December 5, 2002 Copyright Copyright 2002 BEA Systems, Inc. All Rights Reserved. Restricted Rights Legend This software and documentation

More information

SUMMARY INTRODUCTION REMOTE METHOD INVOCATION

SUMMARY INTRODUCTION REMOTE METHOD INVOCATION SUMMARY REMOTE METHOD INVOCATION PROGRAMMAZIONE CONCORRENTE E DISTR. Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2015 2016 rcardin@math.unipd.it Introduction

More information

Distributed Information Systems

Distributed Information Systems Distributed Objects and Remote Invocation Programming Models For Distributed Applications Objectives RPC and RMI. Remote invocation semantics. Implementation of RMI. References DSCD: Chapter 5 Conventional

More information

Interprocess Communication Tanenbaum, van Steen: Ch2 (Ch3) CoDoKi: Ch2, Ch3, Ch5

Interprocess Communication Tanenbaum, van Steen: Ch2 (Ch3) CoDoKi: Ch2, Ch3, Ch5 Interprocess Communication Tanenbaum, van Steen: Ch2 (Ch3) CoDoKi: Ch2, Ch3, Ch5 Fall 2008 Jussi Kangasharju Chapter Outline Overview of interprocess communication Remote invocations (RPC etc.) Message

More information

Distributed Computing

Distributed Computing Distributed Computing 1 Why distributed systems: Benefits & Challenges The Sydney Olympic game system: see text page 29-30 Divide-and-conquer Interacting autonomous systems Concurrencies Transactions 2

More information

Component-Based Software Engineering

Component-Based Software Engineering Component-Based Software Engineering Remote Method Invocation Paul Krause Introduction to RMI Lecture 11 - RMI Simple Example - DivideServer Demo of this example Review a more complex example - StudentEnrollment

More information

Sockets and RMI. CS151 Chris Pollett Dec. 5, 2005.

Sockets and RMI. CS151 Chris Pollett Dec. 5, 2005. Sockets and RMI CS151 Chris Pollett Dec. 5, 2005. Outline Echo Server with Multiple Clients Client pull/server push Remote Method Invocation Proxy Pattern Echo Server with Multiple Clients public class

More information

Lecture 18 Inside Java RMI

Lecture 18 Inside Java RMI CMSC 433 Fall 2014 Sec/on 0101 Mike Hicks (slides due to Rance Cleaveland) Lecture 18 Inside Java RMI Recall Java RMI applica/ons consist of three en//es Remote object servers Host remote objects Handle

More information

Communication. Distributed Systems Santa Clara University 2016

Communication. Distributed Systems Santa Clara University 2016 Communication Distributed Systems Santa Clara University 2016 Protocol Stack Each layer has its own protocol Can make changes at one layer without changing layers above or below Use well defined interfaces

More information

03 Remote invocation. Request-reply RPC. Coulouris 5 Birrel_Nelson_84.pdf RMI

03 Remote invocation. Request-reply RPC. Coulouris 5 Birrel_Nelson_84.pdf RMI 03 Remote invocation Request-reply RPC Coulouris 5 Birrel_Nelson_84.pdf RMI 2/16 Remote Procedure Call Implementation client process Request server process client program client stub procedure Communication

More information

BEA WebLogic Server. Programming WebLogic RMI

BEA WebLogic Server. Programming WebLogic RMI BEA WebLogic Server Programming WebLogic RMI BEA WebLogic Server 6.1 Document Date: June 24, 2002 Copyright Copyright 2002 BEA Systems, Inc. All Rights Reserved. Restricted Rights Legend This software

More information

Lecture 17 Java Remote Method Invoca/on

Lecture 17 Java Remote Method Invoca/on CMSC 433 Fall 2014 Sec/on 0101 Mike Hicks (slides due to Rance Cleaveland) Lecture 17 Java Remote Method Invoca/on 11/4/2014 2012-14 University of Maryland 0 Recall Concurrency Several opera/ons may be

More information

Distributed Object-Based Systems The WWW Architecture Web Services Handout 11 Part(a) EECS 591 Farnam Jahanian University of Michigan.

Distributed Object-Based Systems The WWW Architecture Web Services Handout 11 Part(a) EECS 591 Farnam Jahanian University of Michigan. Distributed Object-Based Systems The WWW Architecture Web Services Handout 11 Part(a) EECS 591 Farnam Jahanian University of Michigan Reading List Remote Object Invocation -- Tanenbaum Chapter 2.3 CORBA

More information

Chapter 5: Distributed objects and remote invocation

Chapter 5: Distributed objects and remote invocation Chapter 5: Distributed objects and remote invocation From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, Addison-Wesley 2005 Figure 5.1 Middleware layers Applications

More information

Object-Oriented Systems Design RMI

Object-Oriented Systems Design RMI Object-Oriented Systems Design RMI Michael Hauser November 2001 Workshop: AW3 Module: EE5029A Tutor: Mr. Müller Course: M.Sc Distributes Systems Engineering Lecturer: Mr. Prowse CONTENTS Contents 1 Aims

More information

Remote Method Invocation R.M.I.

Remote Method Invocation R.M.I. Distributed Computing Remote Method Invocation R.M.I. Gheorghe Aurel Pacurar Distributed Computing using RMI Remote Method Invocation (RMI) allows object-to-object communication between different Java

More information

SAS 9.2 Foundation Services. Administrator s Guide

SAS 9.2 Foundation Services. Administrator s Guide SAS 9.2 Foundation Services Administrator s Guide The correct bibliographic citation for this manual is as follows: SAS Institute Inc. 2009. SAS 9.2 Foundation Services: Administrator s Guide. Cary, NC:

More information

Concurrent Object-Oriented Programming

Concurrent Object-Oriented Programming Concurrent Object-Oriented Programming Bertrand Meyer, Volkan Arslan 2 Lecture 4: Motivation and Introduction Definition 3 Concurrent programming = parallel programming on a single processor? = is about

More information

Chapter 2 Architectures. Software Architectures

Chapter 2 Architectures. Software Architectures Chapter 2 Architectures Software architectures of distributed systems System architectures of distributed systems 1 Software Architectures Software architecture describes how the software components are

More information