jini – an infrastructure for dynamic service networksjini • infrastructure (“middleware”)...
TRANSCRIPT
![Page 1: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/1.jpg)
http://ww
w.ito.tu-darm
stadt.deJini –an Infrastructurefor Dynamic Service NetworksPeer HasselmeyerIT Transfer Office (ITO)Darmstadt University of Technology
- Java Intelligent Network Infrastructure- Jini Is Not Initials
![Page 2: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/2.jpg)
Overview
• Jini, what’s that?– motivation– overview
• RMI/Serialization• Jini infrastructure
– lookup service– discovery & join
protocols– programming
example– more details
• Jini programming model– leasing– distributed events
• Jini services– transactions– JavaSpaces
• Summary
Jini: TalkOutline
![Page 3: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/3.jpg)
Jini
• Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems– facilitates writing / deploying distributed
applications
Jini: Motivation
![Page 4: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/4.jpg)
Jini
• Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems– facilitates writing / deploying distributed
applications•framework of APIs with usefulfunctions / services
•helper services (discovery, lookup,...)
•suite of standard protocols andconventions
Jini: Motivation
![Page 5: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/5.jpg)
Jini
• Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems– facilitates writing / deploying distributed
applications
•services, devices, … find each other automatically (“plug and play”)
•added, removed components•changing communication relationships•mobility
Jini: Motivation
![Page 6: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/6.jpg)
Jini
• Based on Java and implemented in Java– may use RMI (Remote Method Invocation)– typed (object-oriented) communication
structure– requires JVM / bytecode everywhere– code shipping
• Strictly service-oriented
Jini: Motivation
![Page 7: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/7.jpg)
Service Paradigm
• Everything is a service (hardware / software / user)– like object-orientation: “everything” is an
object– e.g. persistent storage, software filter, help
desk, …• Services are defined by interfaces and
provide their functionality via their interfaces– services are further characterized by their
attributes (e.g. “600 dpi”, “version 21.1”)
Jini: Motivation
![Page 8: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/8.jpg)
Service Paradigm
• Jini’s run-time infrastructure offers mechanisms for adding, removing, and finding services
• Services (and service users) “spontaneously” form a system (“federation”)
Jini: Motivation
![Page 9: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/9.jpg)
A Jini Federation
Printservice
Picture storageservice
Picture mailingservice
Network
Camera 2(client)
Camera 1(client)
Jini: Motivation
![Page 10: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/10.jpg)
What Kind of Services?
• Devices:– printer, fax machine, ...– storage, persistency, configuration, ...– computation, ...
• Software:– spell checking, format conversion, ...– online banking, stock trading, ...– tourist guide, local maps, hotels,
restaurants, ...
Jini: Motivation
![Page 11: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/11.jpg)
Spontaneous Networking
• Objects in an open, distributed, dynamic world find each other and form a transient community– cooperation, service usage, …
• Problem: no a priori knowledge about existence, interface, functionality, and trustworthiness of services– “traditional” client/server model: server
knows nothing about its clients, but client knows the server, its interface (API, protocol) and its functionality
Jini: Motivation
![Page 12: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/12.jpg)
Spontaneous Networking
• Objects must be able to find each other• Must be fast, easy, and automatic
• But: what for?
me X
who else?
Jini: Motivation
![Page 13: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/13.jpg)
What Does Tomorrow Look Like?
• Increasing number of internet users
• Powerful PDAs and notebooks
• Increasing mobility• New wireless information
devices• Numerous mobile
networked devices
Jini: Motivation
![Page 14: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/14.jpg)
What Does Tomorrow Look Like?
• Numerous processors in embedded systems– e.g. software updates for
your washing machine, internet-ready microwave, ...
• Trend towards ubiquitous networks and spontaneous networking / service access– high bandwidth, wireless,
cheap
Jini: Motivation
![Page 15: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/15.jpg)
Middleware
• Approach from a different direction: “middleware”– components to help build and deploy
distributed applications (development-time vs. run-time)
– located between the application logic and the underlying physical network and operating system
Jini: Motivation
![Page 16: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/16.jpg)
Middleware
Application ApplicationApplication
Platform• OS• network
Platform• OS• network
MiddlewareService
Service
Service
Service
APIs
Platform interface
Jini: Motivation
![Page 17: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/17.jpg)
Middleware
• Abstraction from tedious network programming wanted
• Abstraction from differing machine architectures wanted– problem: data encoding (e.g. big/little
endian, integer size, array storage layout, ...)
• Components for recurring problems (e.g. naming service, security service, ...)
Jini: Motivation
![Page 18: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/18.jpg)
Problems with Current Middleware
• Systems hide network from programmer– programmers don’t have to deal with the
network and its inherent problems (unreliability, latency, bandwidth, ...)
– no exception handling• Data is moved to the computation
– “classical” client/server paradigm– not always most efficient solution– problem: different data formats (byte-order)– but: program code is usually not available
everywhere (different system architectures, installation, ...)
Jini: Motivation
![Page 19: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/19.jpg)
Middleware: Partial Failure
• Difference between local and remote call: total vs. partial failure
• Components might be unreachable: server crash, broken network connection, ...
• Problem: how to distinguish unreachable from slow server
Jini: Motivation
![Page 20: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/20.jpg)
Middleware: Partial Failure
• Components / middleware have to be able to deal with partial failure
• Unreachability of one component should not (or only minimally) affect other components– e.g. Internet: server crash does not affect
other servers• Jini offers mechanisms to deal with
partial failure
Jini: Motivation
![Page 21: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/21.jpg)
Some Fallacies of CommonDistributed Computing Systems
• The idealistic view…– the network is reliable– latency is zero– bandwidth is infinite– topology doesn’t change– there is one administrator
• …isn’t true in reality– Jini addresses some of these issues – at least it does not hide or ignore them
Jini: Motivation
![Page 22: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/22.jpg)
Bird’s-Eye View on Jini
• Jini consists of a number of APIs• Is an extension to the
Java 2 platform dealing with distributed computing
• Is a layer of abstractionbetween application and underlying infrastructure (network, OS) → “middleware”
• Extension of Java in three dimensions
Network
Operating system
Java technology
JiniJini technologytechnology
Applications Services
Jini: Overview
![Page 23: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/23.jpg)
Jini’s Extensions to Java
• Extensions regarding networked systems
• Distinction may seem blurred
Infrastructure Programmingmodel
Services
Java • JVM• RMI• …
• Swing• Beans• …
• TransactionService
• EnterpriseJavaBeans
• …Jini • Discovery
• Lookup• Join
• Transactions• Leasing• Distributed
Events
• JavaSpaces• Transaction
Manager
Jini: Overview
![Page 24: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/24.jpg)
Jini’s Use of Java
• Jini requires JVM (as bytecodeinterpreter) and (currently) RMI– homogeneity in a heterogeneous world– is this realistic?
• But: devices that are not “Jini-enabled” can be managed by a software proxy which resides at some place in the net– e.g. “Device Bay”
• Safety of Java applies to Jini as well– type safety, array bounds, sand box, ...
Jini: Overview
Able to performdiscovery & join;have a JVM; ...
![Page 25: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/25.jpg)
Jini vs. Mobile Agents
• Jini is Java-based– most mobile agent platforms are based on
Java– Java bytecode often used as a universal
machine language– applets are working instances of the mobile
code paradigm• Jini uses the mobile code paradigm
– service proxies are sent to the client (via the lookup service)
Jini: Overview
![Page 26: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/26.jpg)
Jini vs. Mobile Agents
• Mobile agents need an infrastructure– Jini is an infrastructure for highly dynamic
distributed systems– Jini provides elementary services and
functionality• e.g. agent coordination with JavaSpaces
• But: Jini is not a mobile agent platform!– further services required– however: Jini (and similar systems) are of
general interest to computer scientists (→ubiquitous computing, distributed systems)
Jini: Overview
![Page 27: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/27.jpg)
Overview
• Jini, what’s that?– motivation– overview
• RMI/Serialization• Jini infrastructure
– lookup service– discovery & join
protocols– programming
example– more details
• Jini programming model– leasing– distributed events
• Jini services– transactions– JavaSpaces
• Summary
Jini: TalkOutline
![Page 28: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/28.jpg)
RMI: Introduction
• RMI: “Remote Method Invocation”• Java’s native middleware• “Regular” Java: method invocation
within one Java VM• By using RMI objects can call methods
of objects running in a different Java VM• Java VMs can be distributed among
multiple machines in a network
RMI:Introduction
![Page 29: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/29.jpg)
Remote Invocation
Network
Java VM
Client
RMI:Introduction
Java VM
ServerMethod invocationResult
![Page 30: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/30.jpg)
What To Use RMI For?
• Server objects offer their functionality (“services”: data, computation) to clients
• Clients can access them via a network• RMI offers mechanism to bring clients
and servers together• Goal: clients can use remote server
objects in (almost) the same way as they use local objects– partial failure possible– larger latency
RMI:Introduction
![Page 31: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/31.jpg)
How Does RMI Work?
• Basic difference between local and remote objects: different Java VMs
• Idea: create a proxy for the remote object in the local Java VM– so-called “stub”– signatures of methods are identical to
methods in remote server object– handles communication with remote object
• “Skeleton” in server is counterpart to stub– forwards parameter to “actual” server object– returns result to stub
RMI:Introduction
![Page 32: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/32.jpg)
How Does RMI Work?RM
I:Introduction
Java VM
Client
Stub
Java VM
Server
Skeleton
NetworkMethod invocation
Result
![Page 33: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/33.jpg)
More Details
Transport Layer
Remote ReferenceLayer
Stub
Client Program
Transport Layer
Remote ReferenceLayer
Skeleton
Server Program
Network
Programmer'sview
RMI:Introduction
![Page 34: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/34.jpg)
RMI Details
• Client: invokes methods of an object• Stub: implements “remote interface” of
server object, passes on parameters• Remote Reference Layer: maps object
references to machines and objects• Transport Layer: manages connections
between machines and handles data transfer
• Skeleton: passes data to server object• Server: implements functionality
RMI:Introduction
![Page 35: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/35.jpg)
Getting Access to Objects
• Clients must get stubs for remote objects• RMI registry: naming service
– mapping name (string) → object– location of registry (machine name and port
number) must be known– name of server object must be known– e.g. “//server.tud.de:2222/HelloServer”– usually reference to first object only; grants
access to further objects (“factory pattern”)– e.g. root: database object, access to entries
• Jini
RMI:Introduction
![Page 36: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/36.jpg)
Example: Remote Interface
• Remote methods are defined by “remote interfaces”:
• Methods can always throw RemoteExceptions– server or network may fail
• Interfaces are marked as remote by extending tag interface java.rmi.Remote
public interface Hello extends java.rmi.Remote { String sayHello()
throws java.rmi.RemoteException; }
RMI:Exam
ple
![Page 37: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/37.jpg)
Example: Server Object
• Server implements remote interface and extends UnicastRemoteObject
RMI:Exam
ple
public class HelloImplextends java.rmi.server.UnicastRemoteObjectimplements Hello {
public HelloImpl()throws java.rmi.RemoteException {
super(); // UnicastRemoteObject}public String sayHello()throws java.rmi.RemoteException {
return “Hello World!”;}
}
![Page 38: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/38.jpg)
Example: Server Object
• UnicastRemoteObject handles RMI related work (make object known to RMI, relay calls)
• Server has to realize interface’s functionality
RMI:Exam
ple
public HelloImpl()throws java.rmi.RemoteException {
super(); // UnicastRemoteObject}public String sayHello()throws java.rmi.RemoteException {
return “Hello World!”;}
![Page 39: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/39.jpg)
Example: Server Startup
• Create server object• Register it with RMI registry
– address/port of registry must be known– name for object must be supplied
public class HelloStart { public static void main(String args[]) {
try {HelloImpl obj = new HelloImpl();java.rmi.Naming.rebind(
“//server.tud.de/HelloServer”, obj);} catch (Exception e) {}[...wait and unregister object on exit...]
}}
RMI:Exam
ple
![Page 40: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/40.jpg)
Example: Client
• Security manager enables class download
• Get server’s stub from RMI registry• Use the server
public class HelloClient { public static void main(String args[]) {
System.setSecurityManager(new java.rmi.RMISecurityManager());
try {Hello obj = (Hello) java.rmi.Naming.lookup(
“//server.tud.de/HelloServer”);System.out.println(obj.sayHello());
} catch (Exception e) {}}}
RMI:Exam
ple
![Page 41: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/41.jpg)
Example: Deployment
• Naming Service must be running:rmiregistry
• Stub has to be created: rmic HelloImpl– creates classes HelloImpl_Stub andHelloImpl_Skel
– no skeletons needed in Java 2(option -v1.2)
RMI:Exam
ple
![Page 42: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/42.jpg)
Example: Deployment
• Security policy needed to access sockets:– java-Djava.security.policy=policyHelloStart
– java-Djava.security.policy=policyHelloClient
• For non-local environments classes (here: HelloImpl_Stub) have to be put onto an HTTP server and server’scodebase has to be supplied
RMI:Exam
ple
![Page 43: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/43.jpg)
Serialization
• Parameters and return values (arbitrary objects) have to be transferred between client and server
• Copy of object has to be sent to remote JVM
• Solution: transform objects into stream of bytes (“serialization”)
• Problem: objects may contain references to other objects– all referenced objects have to be
recursively serialized (“transitive closure”)
RMI:Serialization
![Page 44: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/44.jpg)
Serialization
Network
Source JVMSe
rializ
atio
n
Des
eria
lizat
ion
Destination JVM
...Byte stream
RMI:Serialization
![Page 45: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/45.jpg)
Serialization
• Transforming an object into a stream of bytes
• Object consists of its code and its (data) state (values of variables)
• Code is stored in class files• State is dynamic and only available at
runtime• Take a “snapshot” of this state
RMI:Serialization
![Page 46: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/46.jpg)
How Does Serialization Work?
• Realized by Java’s introspection facilities
• All non-transient, non-static fields are recursively written to a byte-stream
• Simple types have predefined storage functions
• Objects’ types (full class names, e.g. java.util.List) and signatures are written
RMI:Serialization
![Page 47: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/47.jpg)
How Does Serialization Work?
• Objects are only written once, even if referenced multiple times
• “Serial version UID” to control versions– calculated from the signature of a class– can be overridden manually to mark
compatible class evolution• Objects have to implement tag interface java.io.Serializable
• Predefined serialization semantics can be overridden by implementing certain functions (writeObject(), readObject())
RMI:Serialization
![Page 48: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/48.jpg)
What Can Be Serialized?
• All primitive types (int, boolean, etc.)• “Remote objects” (by sending serialized
stubs)• Base types (String, Integer, ...) that
implement java.io.Serializable• Most container classes (Hashtable,
Vector, ...) if and only if they only contain serializable objects
• Some AWT and Swing classes• Your classes, if they implement java.io.Serializable
RMI:Serialization
![Page 49: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/49.jpg)
What Cannot Be Serialized?
• Base types that do not implementSerializable– “wrapper classes” possible (by inheritance)
• “Low level” classes:– input and output streams– threads– peer classes
• Objects that reference non-serializable objects
RMI:Serialization
![Page 50: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/50.jpg)
What To Use Serialization For?
• Write to file: make objects persistent– configurations– (Enterprise) Java Beans– to continue working on the same state later
• Write to socket:– to transfer objects to another JVM– parameter passing– mobile agents
RMI:Serialization
![Page 51: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/51.jpg)
Code Mobility
• Objects consists of two parts:– code (in Java class files)– state (values of attributes, execution
pointers)• RMI transfers only data state• Problem: code is usually not locally
available at recipient (i.e. not listed in its classpath)
• Solution: code can be downloaded at run-time (e.g. from an HTTP server)
RMI: Code
Mobility
![Page 52: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/52.jpg)
Code Mobility
Statea=5b=7
Implementationa=?b=?
Code from(web) server
Data fromsource JVM
Reconstructed objecta=5b=7
RMI: Code
Mobility
![Page 53: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/53.jpg)
Codebase
• Code can be downloaded, but: where from?
• Location of code is transferred together with its state (“codebase”)
• Codebase is a list of URLs• URL might point to
– directory containing the class tree– JAR file containing the classes
• Codebase is set as a property when starting a JVM
RMI: Code
Mobility
![Page 54: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/54.jpg)
Security
• Unknown objects are executed on local machine (like applets)
• Access restrictions desired; specified by security policies– fine-grained control of local resources
(especially storage, network) possible– rights are granted based on
• where code came from (network, local file)• who signed code
grant signedBy “sysadmin”, codeBase “http://server.tud.de/-” {permission java.net.SocketPermission “*:1024-”, “connect”;
};
RMI: Code
Mobility
![Page 55: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/55.jpg)
Overview
• Jini, what’s that?– motivation– overview
• RMI/Serialization• Jini infrastructure
– lookup service– discovery & join
protocols– programming
example– more details
• Jini programming model– leasing– distributed events
• Jini services– transactions– JavaSpaces
• Summary
Jini: TalkOutline
![Page 56: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/56.jpg)
Jini Infrastructure
• Main components are:– lookup service as repository / naming
service / trader– protocols based on TCP/UDP/IP
• discovery, join, lookup– proxy objects
• transferred from service to clients• represent the service locally at the client
Jini: Infrastructure
![Page 57: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/57.jpg)
Jini Infrastructure
• Goal: spontaneous networking and formation of federations without prior knowledge of local network environment
• Problem: How do service providers and clients get to know their local environment?
Jini: Infrastructure
![Page 58: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/58.jpg)
Lookup Service
• Similar to RMI registry and CORBA naming service
• Repository of service providers• Tasks:
– registration of services (“advertising”)– distribution of services (clients find
services)• Main component of every Jini federation• May be redundant and hierarchically
organized (similar to DNS)
Jini: LookupService
![Page 59: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/59.jpg)
Jini Federation
Client
LookupService
Service
-
registerlook
up
use
Jini: LookupService
![Page 60: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/60.jpg)
Lookup Service
• Reference implementation uses Java RMI for communication– required: objects must be able to migrate
through the net• Not only name and address of a service
are stored (as in traditional naming services), but also set of attributes– e.g.: printer (color: true, dpi: 600, ...)– attributes may be complex classes
• e.g.: user interface(s)
Jini: LookupService
![Page 61: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/61.jpg)
Discovery: Finding a LUS
• Goal: Finding a lookup service without knowing anything about the network– to advertise (register) a service– to find (look up) an existing service
• Discovery protocol:– multicast to well-known address/port– lookup service replies with a serialized
object (interface ServiceRegistrar)• proxy object of lookup service gets loaded to
discovering entity• communication with LUS via this proxy
Jini: Protocols
![Page 62: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/62.jpg)
Where is the lookupservice?
Lookup Service
???
Lookup Service
That’sme!!!
Lookup Service
ProxyProxyLookup Service
ProxyProxy
Multicast Request
Reply
Communication
Lookup ServiceLookup Service
ProxyProxy
Jini: Protocolsforeign network
Discovery
![Page 63: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/63.jpg)
Join: Registering a Service
• Service provider already received a proxy of the lookup service
• Provider uses this proxy to register its service (register())
• Provider sends the lookup service– its service proxy– attributes that further describe the service
• Provider can now be found and used in this Jini federation
Jini: Protocols
![Page 64: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/64.jpg)
...
Lookup Service
Service database in LUS
Join
Lookup Service
ProxyProxy
Entry 1 Entry 2 Entry n...Serviceproxy
Entry1Entry2 Entry n...Serviceproxy
Registration
Service
Registration
Jini: Protocols
![Page 65: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/65.jpg)
Lookup: Searching Services
• Client knows lookup service (e.g. via discovery protocol)
• Looking for certain (type of) service• Creates query for lookup service
– in form of a “service template”– matching by service type and/or attributes
and/or registration number of service– wildcards possible
Jini: Protocols
![Page 66: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/66.jpg)
Lookup: Searching Services
• Lookup service returns one or more matches (or zero)
• Selection usually done by client• Service use by calling functions of
service proxy• Any protocol between proxy and service
provider possible
Jini: Protocols
![Page 67: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/67.jpg)
...
Lookup Service
Service database in LUS
Entry1Entry2 Entry n...Serviceproxy
Entry1Entry2 Entry n...Serviceproxy
Lookup
Lookup Service
ProxyProxy Lookup?
??
Comm
unication
Comm
unication
Client
Entry1Entry2 Entry n...Serviceproxy
Jini: Protocols
![Page 68: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/68.jpg)
Jini Programming Example
• How is a service implemented?• How does a client get access to a
service?• How is a service described?
Jini: Protocols
![Page 69: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/69.jpg)
The “Running Example”
Lookup Service
Officeapplication
Printerproxy Any protocol
Communication between application and printer via function calls of proxy
Printerproxy
Printerproxy
Jini: Protocols
![Page 70: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/70.jpg)
The “Running Example”
• Printer registers itself with the office’s lookup service
• Printer provides print interface as its servicepublic interface Print extends java.rmi.Remote {
public PrinterParams readPrinterParams() throws java.rmi.RemoteException;
public SuccessCode print(Document doc)throws java.rmi.RemoteException;
[...etc...]}
Jini: Protocols
![Page 71: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/71.jpg)
The “Running Example”
• Implementation of service consists of provider and proxy
• Proxy is stored in the lookup service and will be transferred to clients upon request
• Protocol between proxy and service provider depends on implementation and is not stipulated by Jini
• Example uses RMI
Jini: Protocols
![Page 72: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/72.jpg)
Implementing Service Provider
public class PrintImpl extendsUnicastRemoteObject implements Print {
[...]public PrinterParams readPrinterParams()
throws RemoteException {// something should be done here
}public SuccessCode print(Document doc)
throws RemoteException {// something else should be done here
}[...]}
Jini: Protocols
There’s noJini in here!
![Page 73: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/73.jpg)
Registering a Servicepublic class PrintRegistration {public static void main(String[] args) {
System.setSecurityManager(new RMISecurityManager());
[...]Print service = new PrintImpl();Entry[] attribute = new Entry[1];attribute[0] = new ServiceInfo(
“Print Service”,“HyperClear”, “Shiny Inc.”, “2000”, “”, “08/15”);
JoinManager jmgr = new JoinManager(service,attribute, (ServiceIDListener) new Listener(),new LeaseRenewalManager());
[...]}}
Jini: Protocols
![Page 74: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/74.jpg)
Multicast Discovery Clientpublic class MCExample implements DiscoveryListener {public static void main(String[] args) {
[...Security Manager etc...]LookupDiscovery ld =new LookupDiscovery(LookupDiscovery.ALL_GROUPS);ld.addDiscoveryListener(new MCExample());
[...]}public void discovered(DiscoveryEvent ev) {
ServiceRegistrar[] regs = ev.getRegistrars();ServiceRegistrar reg = regs[0];Class[] cl = new Class[] { Print.class };ServiceTemplate tmpl =
new ServiceTemplate(null, cl, null);Print proxy = (Print) reg.lookup(tmpl);
}public void discarded(DiscoveryEvent e) {}
}
Jini: Protocols
![Page 75: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/75.jpg)
Overview
• Jini, what’s that?– motivation– overview
• RMI/Serialization• Jini infrastructure
– lookup service– discovery & join
protocols– programming
example– more details
• Jini programming model– leasing– distributed events
• Jini services– transactions– JavaSpaces
• Summary
Jini: TalkOutline
![Page 76: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/76.jpg)
Discovery
• Protocols to find lookup services• Multicast request protocol
– client asks for local lookup services– no prior knowledge of local network
necessary• Unicast request protocol
– used to contact known lookup services– works across subnet boundaries and over
the Internet
Jini: More Details
![Page 77: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/77.jpg)
Discovery
• Multicast announcement protocol– protocol for lookup services to announce
their presence• Example: printer registers with the office
via multicast, but gets service for software updates from a dedicated lookup server via unicast discovery
Jini: More Details
![Page 78: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/78.jpg)
Multicast Request Protocol
• No information about the host network needed
• Active search for lookup services• Discovery request is multicast packet
– IP-centric– multicast address for discovery is
224.0.1.85– default port number of lookup services is
4160• hexadecimal subtraction: CAFE16-
BABE16=416010
Jini: More Details
![Page 79: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/79.jpg)
Multicast Request Protocol
• Discovery request is multicast packet– recommended time-to-live is 15– usually does not cross subnet boundaries
• Discovery reply is establishment of a TCP connection– port for reply is included in multicast
request packet
Jini: More Details
![Page 80: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/80.jpg)
Multicast Request Protocol
JavaVMclient/service
Multicastrequest client
Multicastresponse server
JavaVMlookup service
Multicastrequest server
Multicastresponse client
Multicast requestMulticast requestpacketpacket
Serviceregistrar
TCP
UDP
Jini: More Details
![Page 81: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/81.jpg)
Multicast Request Packet
Group m (String)...
Group 1 (String)Number of groups (int)
LUS n (ServiceID)...
LUS 1 (ServiceID)Number of known LUSes (int)
Reply port (int)Protocol version (int)
max.512 bytes
Jini: More Details
![Page 82: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/82.jpg)
Unicast Discovery Protocol
• Used to contact lookup services with known locations
• Uses TCP (unicast) connections to port 4160
• Simple request-response protocol
JavaVMclient/service
JavaVMlookupservice
UnicastUnicast requestrequest
Serviceregistrar
UnicastUnicast responseresponse
Establish TCP connectionEstablish TCP connection
Jini: More Details
![Page 83: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/83.jpg)
Unicast Packets
• Unicast Request (client → lookup service)
• Unicast Response (lookup service →client)
Group m (String)...
Group 1 (String)Number of groups (int)
LUS proxy (MarshalledObject)
Protocol version (int)
Jini: More Details
![Page 84: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/84.jpg)
Multicast Announcement Protocol
• Used by lookup services• Announces the availability of lookup
services• Based on multicast UDP• Announcements are sent periodically
– recommended: every 120 seconds• Receivers listen for announcements on
well-known port• If not yet known, receiver starts unicast
discovery of this service
Jini: More Details
![Page 85: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/85.jpg)
Multicast Announcement Packet
Group m (String)...
Group 1 (String)Number of groups (int)Service id (ServiceID) max.
512 bytes
Port for unicast discovery (int)Host for unicast discovery (String)
Protocol version (int)
Jini: More Details
![Page 86: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/86.jpg)
Lookup Service Details
Lookup Service
Client
Registration
Lookup
Service
Serv
ice
u sa g
e
Jini: More Details
![Page 87: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/87.jpg)
Groups
• There may be lots of lookup services in a large Jini system
• Idea: split lookup services into groups– group name: simple text identifier– clients/services always announce interest in
certain group(s)– unwanted groups are ignored– services do not explicitly register for certain
groups, rather with LUS that carries group• e.g. one lookup service per department:
accounting, production, research, ...
Jini: More Details
![Page 88: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/88.jpg)
LUS: Proxy Interface
public interface ServiceRegistrar {public ServiceRegistration
register(ServiceItem item,long leaseDuration)
throws RemoteException;public java.lang.Object
lookup(ServiceTemplate tmpl)throws RemoteException;
public ServiceMatcheslookup(ServiceTemplate tmpl,
int maxMatches)throws RemoteException;
[...]}
Used by serviceproviders
Used by clients
Jini: More Details
![Page 89: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/89.jpg)
Join: More Features
• To join, a service supplies:
– its proxy– its ServiceID (if previously assigned;
“universally unique identifier”)– set of attributes– set of groups (or ALL_GROUPS)– (possibly empty) set of specific lookup
services to join
Jini: More Details
ServiceItem(Object service,ServiceID id, Entry[] attributes)
![Page 90: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/90.jpg)
Join: Service IDs
• To join, a service supplies:
• Service-ID is a 128 bit “universally unique identifier”– generated by the lookup service when
registering for the first time– service has to reuse it for all later
registrations– service has to make it persistent
ServiceItem(Object service,ServiceID id, Entry[] attributes)
Jini: More Details
![Page 91: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/91.jpg)
Join: More Features
• Service waits a random amount of time after start-up– prevents packet storm after restarting a
network segment• Registration with a lookup service is
bound to a lease– service has to renew its lease periodically
• Discovery and join can be handled by objects of class JoinManager
Jini: More Details
![Page 92: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/92.jpg)
Lookup: More Features
• Client looks for service(s) registered with a lookup service
• Any combination of search criteria possible:– ServiceID– service type– certain attributes
Jini: More Details
![Page 93: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/93.jpg)
Lookup: More Features
• Client creates ServiceTemplate
• Template filled with interfaces, entries and/or ServiceID
• Wildcards possible, represented by null
• Attributes: only exact matching possible (no “larger-than”, ..)
• No query language
Jini: More Details
ServiceTemplate(ServiceID serviceID, java.lang.Class[] serviceTypes,Entry[] attrSetTemplates)
![Page 94: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/94.jpg)
Entries
• Difference to “traditional” naming services
• Not only a name for a service• Properties:
– set of attributes• e.g.: PrinterParams (dpi: 600, type: color, …)
– every serializable data type is possible– data and methods– complex classes possible
• e.g. different user interfaces (AWT, Swing, speech, ...)
Jini: More Details
![Page 95: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/95.jpg)
Jini: More Details
Entries (Examples)
public class Name extends AbstractEntry {
public String name;public Name() {}public Name(String name) {
this.name = name;}
}
public class PrinterEntry extends AbstractEntry {
public PrinterType type;public Integer pagesPerSecond;
[...]public PrinterEntry() {}public PrinterEntry(PT type) {
this.type = type;[...]
}}public class AWTGUIEntry extends
AbstractEntry {public Panel panel;
[...]public GUIEntry() {}public GUIEntry(Panel panel) {
this.panel = panel;[...]
}}
![Page 96: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/96.jpg)
Entries (Examples)
public class Name extends AbstractEntry {
public String name;public Name() {}public Name(String name) {
this.name = name;}
}
public class PrinterEntry extends AbstractEntry {
public PrinterType type;public Integer pagesPerSecond;
[...]public PrinterEntry() {}public PrinterEntry(PT type) {
this.type = type;[...]
}}public class AWTGUIEntry extends
AbstractEntry {public Panel panel;
[...]public GUIEntry() {}public GUIEntry(Panel panel) {
this.panel = panel;[...]
}}
Jini: More Details
Complex data structures
![Page 97: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/97.jpg)
Lookup Service vs. Naming Service
Naming service Lookup serviceDescription by name (text) only• e.g. /devices/printers/ →
printers• search by name only
Description byServiceItems• type & attributes• arbitrary search dimensions
Name implies type Type is explicitStandardized namingconventions
Standardized interfaces
Usually no expiration of entries(heartbeat, keep-alive)
Services have to renew theirentries in the lookup serviceperiodically (leasing)
Identified by (static) address;clients need to know address
Discovery; no networkinformation necessary
groups can be modeled byaddresses
group concept
Jini: More Details
![Page 98: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/98.jpg)
Proxy: Features
• All communication between clients and services is handled by service’s proxy
• Proxy object is stored in the lookup service upon registration
• Serialized object• Implements one or more service
interfaces• Service type is defined by the type of the
interface(s)
Jini: More Details
![Page 99: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/99.jpg)
Proxy: Features
• Upon request, stored object is sent to the client as a local proxy of the service
• If needed, client retrieves necessary classes– class location is stored in codebase (URL)
• Client communicates with service provider via service proxy: client invokes methods of the proxy object
• Client only needs to know interface• Proxy implementation hidden from client
Jini: More Details
![Page 100: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/100.jpg)
Proxy: Implementation
• Implementation of service functionality is independent from service interface
• Partition of service functionality depends on service implementer’s choice
• Parts of or whole functionality may be executed by the client (within the proxy)
ClientClient ServiceService
ProxyProxy Communication
ClientClient ServiceService
ProxyProxy Comm ication
Jini: More Details
![Page 101: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/101.jpg)
Proxy: Implementation
• When dealing with large volumes of data, it usually makes sense to preprocess parts of or all the data– e.g.: compressing video data before
transfer
ClientClient ServiceService
ProxyProxy Communication
ClientClient ServiceService
ProxyProxy Comm ication
Jini: More Details
![Page 102: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/102.jpg)
Jini 1.1
• More classes belong to standard Jini(i.e. net.jini.*), e.g. JoinManager
• Helper classes– JoinManager, LeaseRenewalManager– Discovery utilities, protocol utilities– ServiceDiscoveryManager & LookupCache
• Helper services– LookupDiscoveryService– EventMailbox– LeaseRenewalService
Jini: More Details
![Page 103: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/103.jpg)
ServiceDiscoveryManager
• Eases handling of multiple lookup services
• Supports different access patterns:on-demand, cached, reactive
• LookupCache– states of LUSes are mirrored: increased
communication and memory use– immediate access to available services– usefulness depends on usage scenario,
especially useful for frequent and low-latency queries
Jini: More Details
![Page 104: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/104.jpg)
LookupCache ExampleJini: M
ore Details
public class LCExample {public static void main(String[] args) {System.setSecurityManager(
new RMISecurityManager());[...]
ServiceDiscoveryManager sdm =new ServiceDiscoveryManager(null, null);
Class[] cl = new Class[] { Print.class };ServiceTemplate tmpl =
new ServiceTemplate(null, cl, null);LookupCache cache =
sdm.createLookupCache(tmpl, null, null);[...]Print proxy = (Print) cache.lookup(null);
[...]}}
Groups, locators, ...
Lease renewal manager
Item Filter
Item Filter
Listener
![Page 105: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/105.jpg)
Overview
• Jini, what’s that?– motivation– overview
• RMI/Serialization• Jini infrastructure
– lookup service– discovery & join
protocols– programming
example– more details
• Jini programming model– leasing– distributed events
• Jini services– transactions– JavaSpaces
• Summary
Jini: TalkOutline
![Page 106: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/106.jpg)
Leases
• Lease is contract between two parties• Leases introduce notion of time
– resource usage is restricted to a certain time frame
– interaction is modeled by repeatedly expressing interest in some resource:
• I’m still interested in X– renew lease periodically– lease renewal can be denied
• I don’t need X anymore– cancel lease or let it expire– lease grantor can use X for something else
Jini: Programm
ing Model
![Page 107: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/107.jpg)
Leases
• Lease is a contract between two parties• Lease grantor is willing to let lease taker
(client) access a certain resource for a certain amount of time
• Lease can be extended (renewed) if resource access is still desired– extension can be denied by grantor
• Resource is released upon lease expiration or cancellation (by client)
![Page 108: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/108.jpg)
What To Use Leases For?
• For allocating hardware and software resources intelligently– no administration necessary (for removal of
stale resource reservations)– e.g. persistent storage, ...
• Distributed “garbage collection”– lease expired → “garbage”
• Inside Jini– registrations with lookup services– resources: transactions, event registrations
Jini: Programm
ing Model
![Page 109: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/109.jpg)
Distributed Events
• Objects in a JVM can register interest in certain events of another object in a different (remote) JVM– network failure– crossing of event notifications– late and lost messages
• “publisher/subscriber” model• Architecture:
Subscriber Eventsource
1. Registration2. Event occurs
3. Send notification
Jini: Programm
ing Model
![Page 110: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/110.jpg)
Distributed Events
• Delivery separated from event semantics• Different delivery behaviors desired by
applications, e.g. guaranteed, in-order,…• Interfaces do not reflect particular
delivery behavior• Event mechanism can be extended to
accommodate different application semantics
Jini: Programm
ing Model
![Page 111: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/111.jpg)
Distributed Events (Example)
• Management application wants to know about printers running out of paper
• Gets printer’s proxy object from lookup service and registers for notifications
Lookup Service
Managementapplication
Registration
Proxy,attributes
Proxy,attributes
Proxy,attributes
Jini: Programm
ing Model
Events
![Page 112: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/112.jpg)
Distributed Events (Example)
• Printer could implement the interface:
public interface PrinterEventsextends Remote {
public EventRegistration register(long eventID,MarshalledObject handback,RemoteEventListener toInform,long leaseLength)
throws RemoteException;}
“handback” is returned to the notified object in every notification. Used to
attach arbitrary information to events.
Reference to theobject to be notified.
Registrationsare leased.
Jini: Programm
ing Model
Type of event tobe notified about
(e.g. out of paper).
![Page 113: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/113.jpg)
Distributed Events (Example)
• Management application (or dedicated listener object) implements interface RemoteEventListener
• Method notify() will be called for every event
Jini: Programm
ing Model
public interface RemoteEventListenerextends Remote, java.util.EventListener{
void notify(RemoteEvent theEvent)throws UnknownEventException,
RemoteException;}
![Page 114: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/114.jpg)
Distributed Events (Example)
• Printer informs clients about events by sending RemoteEvents
• Event is unambiguously identified by tuple <source, id, sequenceNumber>
• Notification is synchronous– allows event source to know that event was
delivered
Jini: Programm
ing Model
toInform.notify(new RemoteEvent(this, eventID, seqNum, handback));
Event source Eventtype
Sequencenumber HandbackRecipient
![Page 115: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/115.jpg)
Overview
• Jini, what’s that?– motivation– overview
• RMI/Serialization• Jini infrastructure
– lookup service– discovery & join
protocols– programming
example– more details
• Jini programming model– leasing– distributed events
• Jini services– transactions– JavaSpaces
• Summary
Jini: TalkOutline
![Page 116: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/116.jpg)
Transactions
• Transactions encapsulate a number of operations– “all or nothing” semantics– operations appear to happen
simultaneously (from outside transaction)– method to ensure consistency
• Two-phase commit protocol– method to perform transactions– Two phases:
• vote on transaction validity• commit/abort operations
Jini: Transactions
![Page 117: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/117.jpg)
Transactions
• Central: a manager– ensures consistency: each transaction
participant will ultimately “commit” or “abort”– performs 2PC protocol
• Example: transfer money from one bank account to another
Jini: Transactions
![Page 118: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/118.jpg)
Transactions: Properties
• Design goal: maximum flexibility, minimum number of interfaces
• Objects must implement certain interface to participate in transactions
• Traditionally transaction manager enforces certain semantics (ACID properties)
• Jini separates protocol from semantics:– 2PC performed by manager– semantics implemented by participants
Jini: Transactions
![Page 119: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/119.jpg)
Distributed Transactions in Jini…
• …are no transactions in a traditional (database) sense
• “Lightweight” transaction• ACID properties
– atomicity / consistency / isolation / durability– each participant implements these
properties as he sees fit• e.g.: transient objects do not need persistency
– main property is atomicity, other properties are “sometimes” optional
• Transactions are leased from manager
Jini: Transactions
![Page 120: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/120.jpg)
Transactions: Participants
• Transaction manager– coordinates transaction– Jini service– implements interfaceTransactionManager
• Clients– initiate transactions
• Transaction participants– objects that perform transactional operations– implement interface TransactionParticipant
– participation is initiated by join operation
Jini: Transactions
![Page 121: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/121.jpg)
Transactions: Semantic Objects
• Transactions have no fixed semantics• Participants need to know the type of a
transaction “semantic objects”– Java type defines the kind of transaction– class Transaction tells objects to use
their standard transaction semantics• Participants accept only certain
transaction types• e.g. DBTransaction
– requires database semantics– transient objects not allowed (durability)
Jini: Transactions
![Page 122: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/122.jpg)
2PC Protocol: Details
• Client starts a transaction– get transaction manager from lookup
service (lookup TransactionManager)– call to create() starts transaction
• usually indirectly via semantic object factory
• Participation in a transaction– participants find out about transaction upon
function invocation• receive Transaction object• call transaction manager’s join() method
– implement TransactionParticipant
Jini: Transactions
![Page 123: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/123.jpg)
2PC Protocol: Details
• Client starts a transaction– get transaction manager from lookup
service (lookup TransactionManager)– call to create() starts transaction
• usually indirectly via semantic object factory
• Participation in a transaction– participants find out about transaction upon
function invocation• receive Transaction object• call transaction manager’s join() method
– implement TransactionParticipant
Jini: Transactions
public interface TransactionManager {TransactionManager.Created create(...);void commit(...)void abort(...)void join(...)int getState(...)
}
public interface TransactionParticipant {void commit(TransactionManager mgr, long id)void abort(TransactionManager mgr, long id)int prepare(TransactionManager mgr, long id)int prepareAndCommit(TransactionManager mgr, long id)
}
![Page 124: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/124.jpg)
JavaSpaces
• Tool for developing distributed applications
• Platform for exchanging objects between distributed applications (“shared blackboard”)
• “Bag full of objects”• Realizes distributed persistency• Jini service
– implemented completely in Java (and RMI)– interaction with service via local proxy
Jini: JavaSpaces
![Page 125: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/125.jpg)
What To Use JavaSpaces For?
• Models “object flow”– e.g. producer / consumer applications– load-balancing
• Job-oriented view– jobs / events are put into the space and
picked up “eventually”, e.g. workflow• Build-in “good” properties
– concurrent access possible– write / read are atomic operations– access within transaction possible
Jini: JavaSpaces
![Page 126: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/126.jpg)
JavaSpaces: Objects
• JavaSpace = “a bag full of objects”• Entries in a JavaSpace service:
– net.jini.core.entry.Entry – known as Entry interface in Jini
– strongly typed by Java type system– two entries of different classes are not
equal, even if they encapsulate the same data types
• Entry A {Integer, Char} ≠ Entry B {Integer, Char}
• Classes: include data/state and methods behavior
Jini: JavaSpaces
![Page 127: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/127.jpg)
Basic Operations: Write
• write puts an entry into a JavaSpace• Uses copy of the object, never the
object itself• write returns a lease
– entry in a JavaSpace has a limited duration– “garbage collection” in a JavaSpace service
Producerwrite(Entry)
LeaseJava
Space
Jini: JavaSpaces
![Page 128: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/128.jpg)
Basic Operations: Read
• uses template (Entry)– exact value match– matches subclasses as well– null matches everything– if more than one match, select and return
one entry at random
Jini: JavaSpaces
Producer Renew leaseLease
JavaSpace Consumer
read(Entry)
![Page 129: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/129.jpg)
Basic Operations: Read
• readIfExists returns null if no match found– read waits until matching entry was found
• take/takeIfExists = read + removal of entry
Jini: JavaSpaces
Producer Renew leaseLease
JavaSpace Consumer
take(Entry)
![Page 130: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/130.jpg)
Basic Operations: Notify
• Notify listeners at arrival of certain entries• Uses Jini distributed events• Clients can register with a JavaSpace
– registration requires a “matching template”– clients implement RemoteEventListener– registration is leased
• Order of notification unspecified– Note: “first come, first serve” for registered
listeners on take
Jini: JavaSpaces
![Page 131: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/131.jpg)
Peculiarities
• Operations can be part of a transaction• Entries can be “lost”:
– write/take may cause a RemoteException– meaning: “may or may not have been
successful”• write: often unproblematic (may be repeated)• take: entries may be lost• transactions necessary
– example: moving entries between JavaSpaces (e.g. for load balancing)
• transactions required
Jini: JavaSpaces
![Page 132: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/132.jpg)
JavaSpaces and Linda
• Design based on Linda tuple spaces– David Gelernter (Yale University)
• Differences:– strong type checking and objects
(methods/behavior)• matching on tuple structure, not just data• templates match subclasses as well• all (serializable) data types can be used as data
– multiple spaces possible– leasing– no “eval” – a JavaSpace is just a repository
Jini: JavaSpaces
![Page 133: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/133.jpg)
Overview
• Jini, what’s that?– motivation– overview
• RMI/Serialization• Jini infrastructure
– lookup service– discovery & join
protocols– programming
example– more details
• Jini programming model– leasing– distributed events
• Jini services– transactions– JavaSpaces
• Summary
Jini: TalkOutline
![Page 134: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/134.jpg)
Summary
• Vision:– everything will be networked– everything will (be able to) communicate– ubiquitous network access– mobility/spontaneity as important paradigms
• Problems:– getting to know the network neighborhood– infrastructure should adapt to devices, not
the other way round– distribution: communication, partial failure,...
• Possible solution: Jini
Jini: Summ
ary
![Page 135: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/135.jpg)
Conclusion
• A number of good ideas– simplicity,“less is more” flexibility– discovery, join, lookup– extension of name services by attributes– leases, events, transactions recurring
design patterns• Right direction
– ubiquitous networks– mobility, spontaneity
• Individual concepts are not new, but together they offer new possibilities
Jini: Summ
ary
![Page 136: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/136.jpg)
But...
• Resource usage– each service usually requires a JVM
• Small devices– JVM and RMI required on device– adaptation to resource-restricted
environment necessary (how?)– proxy objects are moved to client (memory)
• Standardized (base) interfaces• What about the competitors (SLP,
UPnP, e-speak, ...)?
Jini: Summ
ary
![Page 137: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/137.jpg)
Problem Areas
• Security– important in dynamic environments– user requires
• confidentiality: encrypted communication• trust: authentication
– services might use other services on behalf of the user
– what about charging for services?– Java RMI security extension does not seem
to be the solution• Scalability
– does Jini scale to a global level?
Jini: Summ
ary
![Page 138: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/138.jpg)
Suggested Reading
• Jini Homepage:http://www.sun.com/jini
• Jini Community:http://www.jini.org
• W. Keith Edwards: Core Jini, Prentice Hall, 1999– good motivation, very detailed– don’t be frightened by more than 700 pages
(everything is said at least twice...)
Jini: Summ
ary
![Page 139: Jini – an Infrastructure for Dynamic Service NetworksJini • Infrastructure (“middleware”) for dynamic, cooperative, spontaneously networked systems – facilitates writing](https://reader033.vdocuments.net/reader033/viewer/2022060810/608e50a131ff5924b238e7cc/html5/thumbnails/139.jpg)
Contact Information
Peer HasselmeyerIT Transfer Office (ITO)Darmstadt University of Technology
Email: [email protected]: http://www.ito.tu-darmstadt.de
Slides: http://www.ito.tu-darmstadt.de/publs/presentations/asama00.pdf
Jini: Summ
ary