Www.objectweb.org Towards a Naming & Binding Framework for ObjectWeb Sacha Krakowiak Univ. of Grenoble & INRIA.

Slides:



Advertisements
Similar presentations
MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Advertisements

What is RMI? Remote Method Invocation –A true distributed computing application interface for Java, written to provide easy access to objects existing.
Pointer Analysis – Part I Mayur Naik Intel Research, Berkeley CS294 Lecture March 17, 2009.
CSE341: Programming Languages Lecture 16 Datatype-Style Programming With Lists or Structs Dan Grossman Winter 2013.
© 2004 Goodrich, Tamassia Using Recursion1 Programming with Recursion.
The Bridge Pattern.. Intent Decouple an abstraction from its implementation so that the two can vary independently Also known as: Handle/Body.
Fundamentals of Computer Science Lecture 14: Recursion Instructor: Evan Korth New York University.
Preliminaries Attendance sheets –I remembered! Survey links –HW1 time survey –Anonymous feedback survey HW discussion (4PM, Commons 9)
Computer Science II Recursion Professor: Evan Korth New York University.
Fundamentals of Computer Science Lecture 14: Recursion Instructor: Evan Korth New York University.
© 2004 Goodrich, Tamassia Using Recursion1. © 2004 Goodrich, Tamassia Using Recursion2 Recall the Recursion Pattern (§ 2.5) Recursion: when a method calls.
Administrative info Subscribe to the class mailing list –instructions are on the class web page, which is accessible from my home page, which is accessible.
Recursion Road Map Introduction to Recursion Recursion Example #1: World’s Simplest Recursion Program Visualizing Recursion –Using Stacks Recursion Example.
SubSea: An Efficient Heuristic Algorithm for Subgraph Isomorphism Vladimir Lipets Ben-Gurion University of the Negev Joint work with Prof. Ehud Gudes.
Introduction to Hashing CS 311 Winter, Dictionary Structure A dictionary structure has the form: (Key, Data) Dictionary structures are organized.
Revision Using Recursion1 Recursion. Revision Using Recursion2 Recall the Recursion Pattern Recursion: when a method calls itself Classic example--the.
© 2004 Goodrich, Tamassia Using Recursion1. © 2004 Goodrich, Tamassia Using Recursion2 Recall the Recursion Pattern (§ 2.5) Recursion: when a method calls.
The Composite Pattern.. Composite Pattern Intent –Compose objects into tree structures to represent part-whole hierarchies. –Composite lets clients treat.
Programming with Recursion
A Framework for Smart Proxies and Interceptors in RMI Nuno Santos P. Marques, L. Silva CISUC, University of Coimbra, Portugal
EER vs. UML Terminology EER Diagram Entity Type Entity Attribute
Composite Design Pattern. Motivation – Dynamic Structure.
Practical Object-Oriented Design with UML 2e Slide 1/1 ©The McGraw-Hill Companies, 2004 PRACTICAL OBJECT-ORIENTED DESIGN WITH UML 2e Chapter 2: Modelling.
Overview Integration Testing Decomposition Based Integration
Fixed Parameter Complexity Algorithms and Networks.
Understanding the CORBA Model. What is CORBA?  The Common Object Request Broker Architecture (CORBA) allows distributed applications to interoperate.
Institute of Computer and Communication Network Engineering OFC/NFOEC, 6-10 March 2011, Los Angeles, CA Lessons Learned From Implementing a Path Computation.
Copyright (c) Qusay H. Mahmoud 1 The Naming Service (Client’s View) A tree-like directory for object references Much like a file system: provides directory.
Introduction to Distributed Systems Slides for CSCI 3171 Lectures E. W. Grundke.
Abstract Factory Design Pattern making abstract things.
Stephen P. Carl - CS 2421 Recursion Reading : Chapter 4.
Object Oriented Programming with C++/ Session 6 / 1 of 44 Multiple Inheritance and Polymorphism Session 6.
LAB 1CSIS04021 Briefing on Assignment One & RMI Programming February 13, 2007.
Comparing JavaBeans and OSGi Towards an Integration of Two Complementary Component Models HUMBERTO CERVANTES JEAN-MARIE FAVRE 09/02.
Spring/2002 Distributed Software Engineering C:\unocourses\4350\slides\DefiningThreads 1 RMI.
RMI RMI is the java API that facilitate distributed computing by allowing remote method calls. A remote method call represents a method invocation between.
Java Remote Method Invocation RMI. Idea If objects communicate with each other on one JVM why not do the same on several JVM’s? If objects communicate.
RMI Remote Method Invocation Distributed Object-based System and RPC Together 2-Jun-16.
1 C++ Classes and Data Structures Jeffrey S. Childs Chapter 4 Pointers and Dynamic Arrays Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall.
Sheet 1 DocEng’03, Grenoble, November 2003 Model Driven Architecture based XML Processing Ivan Kurtev, Klaas van den Berg University of Twente, the Netherlands.
C HAPTER 03 Pointers Compiled by Dr. Mohammad Alhawarat.
Define an interface for creating an object, but let subclasses decide which class to instantiate Factory Method Pattern.
Define an interface for creating an object, but let subclasses decide which class to instantiate.
Lecture 10 Concepts of Programming Languages Arne Kutzner Hanyang University / Seoul Korea.
Remote Method Invocation with Java-RMI
Chapter 13 : Symbol Management in Linking
Graph Coverage for Design Elements 1.  Use of data abstraction and object oriented software has increased importance on modularity and reuse.  Therefore.
Microsoft Windows Server 2003 TCP/IP Protocols and Services Technical Reference Slide: 1 Lesson 18 Windows Internet Name Service (WINS)
Remote Method Invocation A Client Server Approach.
Int fact (int n) { If (n == 0) return 1; else return n * fact (n – 1); } 5 void main () { Int Sum; : Sum = fact (5); : } Factorial Program Using Recursion.
1 ENERGY 211 / CME 211 Lecture 4 September 29, 2008.
1 Towards Integrated Tool Support for the User Requirements Notation Jean-François Roy
COMPOSITE PATTERN NOTES. The Composite pattern l Intent Compose objects into tree structures to represent whole-part hierarchies. Composite lets clients.
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
7-Nov Fall 2001: copyright ©T. Pearce, D. Hutchinson, L. Marshall Oct lecture23-24-hll-interrupts 1 High Level Language vs. Assembly.
CSE 332: C++ Exceptions Motivation for C++ Exceptions Void Number:: operator/= (const double denom) { if (denom == 0.0) { // what to do here? } m_value.
Abstract Factory Pattern
Writing simple Java Web Services using Eclipse
Software Testing and Maintenance 1
RMI Packages Overview java.rmi java.rmi.server java.rmi.registry
Java 4/4/2017 Recursion.
What is RMI? Remote Method Invocation
Abstract Factory Pattern
Intent (Thanks to Jim Fawcett for the slides)
Jim Fawcett CSE776 – Design Patterns Summer 2003
Different Levels of Testing
An Introduction to Software Architecture
CORBA Programming B.Ramamurthy Chapter 3 5/2/2019.
Lecture 10 Concepts of Programming Languages
Presentation transcript:

Towards a Naming & Binding Framework for ObjectWeb Sacha Krakowiak Univ. of Grenoble & INRIA

Naming Framework /7/2002 Motivations & Objectives è Most ObjectWeb projects need some form of naming and binding è All currently proposed frameworks are derived from Jonathan, with some variations è Goal: propose a single framework that could be reused by all projects

Naming Framework /7/2002 A brief refresher on Naming è A name designates an object  To distinguish it from other objects  To get access to the object è A name is defined in a naming context  A naming context = a part of the “universe”  A context may have a name in another context (hence the notion of a context graph)  A context graph may have any structure; usually there is some form of hierarchy

Naming Framework /7/2002 A context graph A name A naming context An object foo a bar alpha beta zzz tau u here

Naming Framework /7/2002 Name resolution è Resolving a name in a context is finding the object (if any) designated by this name è Name resolution is a recursive process (walking through a chain of naming contexts)  The target of an individual resolution may be A typed value - resolution stops An address - resolution stops A new name in a new context - resolution recurses è Binding = interconnecting a set of objects in a computing system  Special case: binding a name to an object in a naming context, i.e. creating an access path from the name fo the object

Naming Framework /7/2002 Binding in the ODP Model  A binding (the chain connecting the name to the object) is itself a (possibly composite) object. Example:  A binding is created by a binding factory (for that type of binding)  A binding factory (or binder) is a special case (an extension) of a naming context client stub session server skeleton binding object

Naming Framework /7/2002 A pattern for binding è The export-bind pattern è export  “Advertise” an object in a naming context by providing it a name for it in that context As an optimization: may perform additional operations, to prepare for effective later access to the object è bind  Get access to an object through a name  Access may be direct (bind returns the object) or indirect (bind returns a proxy)  The object must have previously been exported

Naming Framework /7/2002 Rationale for a proposal è Should answer current needs (as identified in current projects) è Should be “minimal” è Should be easily extended for future needs, not yet precisely defined è Conversion to the framework should be easy for existing projects

Naming Framework /7/2002 Naming in ObjectWeb è Basic types  Name Special case: Identifier, a simple, one-level name  NamingContext  Binder (extends NamingContext) è Two kinds of operations needed  Operations that only act on names: navigation, (de)composition, encoding, decoding  Operations that have to do with the name-object relationship: (un)binding, name resolution

Naming Framework /7/2002 public interface Name { /* Returns the NamingContext that created this name. */ NamingContext getContext (); /* Returns the object designated by the given name (may be a Name in another context). */ Object resolve (); /* Returns an object that gives access to the object designated by the target name. * hints: optional additional information. * throws RuntimeException if the binding fails, or is not supported */ Object bind (Object hints); byte[] encode (Name n); byte[] encode (Name n, byte[] b, int off); }

Naming Framework /7/2002 public interface NamingContext { /* Creates and returns a name in this context to designates the given object. * o: the object to be exported. This object may be a name of another context. * hints: optional additional information. */ Name export (Object o, Object hints); /* Encodes the given name as an array of bytes and returns this array. * n: the name to be encoded (must belong to this context) */ byte[] encode (Name n); /* Encodes the given name in the given array of bytes. * n: the name to be encoded (must belong to this context) * b: the byte array where the encoded name must be put. * off: the index at which the first byte of the encoded name must be put. * returns the length len of the encoded name.. * throws RuntimeException if the given array is too small for the encoded name */ byte[] encode (Name n, byte[] b, int off); /* Decodes the given encoded name and returns that name. * b: an array of bytes containing the encoding of a name created by this context. * throws RuntimeException if the given encode name cannot be decoded. */ Name decode (byte[] b); /* Decodes the given encoded name. * b: an array of byte containing the encoded form of a name created by this context. * off offset of the first byte of the encoded name in b. * len length of the encoded name, in bytes. * throws RuntimeException if the given encoded name cannot be decoded. */ Name decode (byte[] b, int off, int len); }

Naming Framework /7/2002 public interface Binder extends NamingContext { /* Returns an object that gives access to the object designated by the given name. * n: a name of this context. * hints: optional additional information. * throws RuntimeException if the binding fails, or is not supported */ Object bind (Name n, Object hints); void unbind(Name n); }

Naming Framework /7/2002 Main issues A remark on bind: it may refer to an operation of a name server (e.g. RmiRegistry, etc.). This is not in contradiction with our definition of bind (in both cases, gives access to an object) è Which operations should be borne by Name and which by NamingContext? è What type for hints? may be Object or Context (not NamingContext, but a set of (name, value) pairs) è What about resolve? Two possibilities:  Just reserved for name manipulation (i.e. returns the “next” component of a name, or fails)  Strict inverse of export (i.e. returns either the next name or an object)