javaspaces
Post on 31-Dec-2015
53 Views
Preview:
DESCRIPTION
TRANSCRIPT
Feb 2002 Mateti on "JavaSpace" 2
AckAck
Ken ArnoldJan NewmarchSusanne HupferAnd many other sources on the
Web
Feb 2002 Mateti on "JavaSpace" 4
public interface JavaSpacepublic interface JavaSpace
public interface JavaSpace {Lease write(Entry entry, Transaction txn, long lease); Entry read(Entry tmpl, Transaction txn, long timeout);Entry readIfExists(Entry tmpl, Transaction txn, long
timeout);Entry take(Entry tmpl, Transaction txn, long timeout);Entry takeIfExists(Entry tmpl, Transaction txn, long
timeout);EventRegistration notify(Entry tmpl, Transaction txn,
RemoteEventListener ln, long lease, MarshalledObject handback);
Entry snapshot(Entry e)}
// throws clauses not shown
Feb 2002 Mateti on "JavaSpace" 6
MP3Request implements EntryMP3Request implements Entry
public class MP3Request implements Entry {public String channelName; // recipient of the request public Integer position; // position # of request in channel public String inputName; // file path public byte[] data; // content of the file public String from; // who sent the request public MP3Request() {} public MP3Request(String channelName) { this.channelName = channelName; } public MP3Request (String channelName, Integer position) {
this.channelName = channelName; this.position = position; } public MP3Request(String channelName, Integer position,
String inputName, byte[] data, String from) {this.channelName = channelName; this.position = position; this.inputName = inputName; this.data = data; this.from = from;
}}
Feb 2002 Mateti on "JavaSpace" 7
From Jini …From Jini …
import net.jini.transaction.*;import net jini.event.*;import net.jini.lease.*;
Feb 2002 Mateti on "JavaSpace" 8
JavaSpaces Technology basisJavaSpaces Technology basis
Built on core JDK facilities– RMI– Object serialization
Part of Sun’s Jini package– Leasing – Transaction– Distributed events
Feb 2002 Mateti on "JavaSpace" 9
JiniJini
JavaSpace Other
Lookup Service
Discovery/Join
Java RMI
… services …
Feb 2002 Mateti on "JavaSpace" 10
JavaSpace v. LindaJavaSpace v. Linda
write: put an entry in the space (out) read: return a matching entry from the
space (rd) take: remove a matching entry from
the space (in) notify: send event when a matching
entry is written (?) JavaSpace has No Linda eval()
Feb 2002 Mateti on "JavaSpace" 11
JavaSpaces architectureJavaSpaces architecture
Entry/TemplateSerializationJavaSpace Scenario JavaSpaces/JavaSpace serverJavaSpace Interface
Feb 2002 Mateti on "JavaSpace" 12
JavaSpace JavaSpace ServiceService
A simple service for distributed computing A shared object repository
– Persistent– Template-matching lookup– Transactions (multi-space)
Stores entries (tuples of objects)– Distributed (RMI-based)– Concurrent
What a JavaSpace service isn't– A relational database– An object oriented database
Feb 2002 Mateti on "JavaSpace" 13
Why Use a JavaSpace? Why Use a JavaSpace?
Cooperative, loosely-coupled systems scale well
Feb 2002 Mateti on "JavaSpace" 14
JavaSpaces SuitabilityJavaSpaces Suitability
JVM– All users should link to a JVM– use Java RMI– Transport among JVMs via JINI
Interoperability– interoperable with other language– via RMI/IIOP and CORBA
Feb 2002 Mateti on "JavaSpace" 15
JavaSapces Concepts: JavaSapces Concepts: A mechanism A mechanism for distributed computingfor distributed computing
dynamic sharing, communication and coordination of Java Objects
Loosely coupled, cooperative marketplace model– producer store objects in the space– consumer lookup and take objects from the space
100% pure Java language based
Feb 2002 Mateti on "JavaSpace" 16
JavaSapces Concepts: A networked JavaSapces Concepts: A networked repository for Java Objectsrepository for Java Objects
Store EntriesEntries (Serialized Java objects) Both data and behaviors Lookup entries by using TemplatesTemplates Type matching (same class?) Value matching: lookup and compare the specific fields
Feb 2002 Mateti on "JavaSpace" 17
Service ProviderService Provider
Implements the objects that provide a service
Finds the lookup services Registers the service object with
lookup services Service object gets downloaded
to clients A typical service object is a proxy
Feb 2002 Mateti on "JavaSpace" 18
A Service Provider ExampleA Service Provider Example
public class AServer implements DiscoveryListener { protected LeaseRenewalManager lm = new LeaseRenewalManager(); public static void main(String argv[]) { new AServer(); Thread.currentThread().sleep(Lease.FOREVER); } public AServer() { LookupDiscovery di = new LookupDiscovery(LookupDiscovery.ALL_GROUPS); di.addDiscoveryListener(this); } public void discovered(DiscoveryEvent evt) { ServiceRegistrar rg = evt.getRegistrars()[0]; ServiceItem item = new ServiceItem(null, new AServerImpl(), null); ServiceRegistration sr = rg.register(item, Lease.FOREVER); lm.renewUntil(sr.getLease(), Lease.FOREVER, this); }}
Feb 2002 Mateti on "JavaSpace" 19
Lookup ServicesLookup Services
Listening on port 4160 Unicast TCP; Multicast UDP Sends a registrar object to requestor Registering == storing a copy of the
service object in the lookup service
4160 == 0xCAFE – 0xBABE
Feb 2002 Mateti on "JavaSpace" 20
Entry ClassEntry Class
Implements interface: public interface Entry extends
java.io.serializable { }
All fields must be public Fields must be objects, not builtins
(no int, etc.) Must have a public null-arg
constructor
Feb 2002 Mateti on "JavaSpace" 21
An Example EntryAn Example Entry
class User implements Entry {public String login; public String homeHost; public String fullName; public Long lastLogin; // ...
}
Feb 2002 Mateti on "JavaSpace" 22
Entry MethodsEntry Methods
write -- put a copy of entry into the space read, readIfExists -- return a matching entry from the
space take, takeIfExists -- remove the matching entry from the
space notify -- send an event when the matching entry is
written snapshot -- return another entry object that contains the
snapshot of the original one
Feb 2002 Mateti on "JavaSpace" 23
Lease write (Entry e, Transaction t, Lease write (Entry e, Transaction t, long lease)long lease)
Write a copy of e into Spacereturns a Lease objectlimited persistence with time-outsexceptions
Feb 2002 Mateti on "JavaSpace" 24
Entry snapshot (Entry e)Entry snapshot (Entry e)
Returns an Entry object with a copy of the original unmodified object
Modification on the original entry will not affect snapshot
Works only within the same JavaSpaces Server where it is generated
Feb 2002 Mateti on "JavaSpace" 25
TemplateTemplate
Entry objectSome/all fields set to specific
valuesNull fields act as wildcards Exact value match of each non-null
field
Feb 2002 Mateti on "JavaSpace" 26
TemplateTemplate
Type matching and subtype matching
Only public fields are considered for matching
Fields should refer to serializable objects
Fields must have properties
Feb 2002 Mateti on "JavaSpace" 27
Entry MatchingEntry Matching
Matching requires a template The service is searched for one
entry that... Is at least the template's type Has all values matching
Feb 2002 Mateti on "JavaSpace" 28
Templates match entries iff …Templates match entries iff …
each field in template is either null or match the entry field via MarshalledObject.equals.
That is, the serialized forms of the objects match exactly.
Feb 2002 Mateti on "JavaSpace" 29
public Entry read (Entry e, Transaction t,public Entry read (Entry e, Transaction t,long timeout)long timeout)
A copy of the matching entry is returned.
read vs. readIfExists: read will wait until a match is found or until transaction settles, up to time out period
Null returned, if nothing matches
Feb 2002 Mateti on "JavaSpace" 30
Entry take(Entry tmpl, Transaction t, Entry take(Entry tmpl, Transaction t, long timeout)long timeout)
Matching object is removed from space
RemoteException: Entry may or may not be removed successfully
Other Exceptions mean failureSubtype matching: returns may be
more than anticipated
Feb 2002 Mateti on "JavaSpace" 31
SerializationSerialization
Entries are not stored in JavaSpaces Serialized form of the class and fields java.rmi.MarshalledObject MashalledObject.equals() Field in template has null value as wildcard set fields/un-set fields Object graph map reference
Feb 2002 Mateti on "JavaSpace" 32
notifynotify
EventRegistration notify(Entry tmplt, Transaction t, RemoteEventListener l, long lease, MarshalledObject handback) RemoteEvent
RemoteEventListener EventRegistraion{
evIDfromWhomseqNo
}
retry to notify listeners
Feb 2002 Mateti on "JavaSpace" 33
JaveSpaces ScenarioJaveSpaces Scenario
JavaSpacesJavaSpaces
RMIRMI
LeasingDistributed
Event
Transaction
Entry
Feb 2002 Mateti on "JavaSpace" 34
LeasingLeasing
Used in distributed environments to solve partial failure of resources and services
Resources are leased and freed when the time of the lease expires
Get rid off debris easilyNegotiation among related partiesLease can be renewed or canceled
Feb 2002 Mateti on "JavaSpace" 35
LeaseLease
“ a time period during which the grantor of the lease insures that the holder of the lease will have access to its resources.”
Typical Grantor: lookup serviceTypical Grantee: component
Feb 2002 Mateti on "JavaSpace" 36
package net.jini.core;package net.jini.core;
public interface Lease {void cancel()
throws
UnknownLeaseException,java.rmi.RemoteException; long getExpiration(); void renew(long duration) throws LeaseDeniedException, UnknownLeaseException, java.rmi.RemoteException;
}
Feb 2002 Mateti on "JavaSpace" 37
ACID properties of transactions ACID properties of transactions
Atomicity – All the operations of a transaction must take place,
or none of them do Consistency
– The completion of a transaction must leave the participants in a ``consistent'' state.
Isolation – The activities of one transaction must not affect any
other transactions Durability
– The results of a transaction must be persistent
Feb 2002 Mateti on "JavaSpace" 38
Two-phase commit protocolTwo-phase commit protocol
Participants tentatively carry out the operations.
All participants then vote. If all agree, the transaction commits. If any disagree, transaction aborts in all.
Feb 2002 Mateti on "JavaSpace" 39
Jini TransactionJini Transaction
Two phase commit model Transaction ID supplied by the manager Based on RMI for communication Dependent on Leasing Mahalo transaction manager is part of Jini
Feb 2002 Mateti on "JavaSpace" 40
Distributed EventDistributed Event
Events in multi-address spacesDesired delayNetwork failure/DelayThird-party agents perform
notificationNon-Java third-party agents
Feb 2002 Mateti on "JavaSpace" 41
Multiple JavaSpacesMultiple JavaSpaces
Multiple JavaSpaces cooperate, and transactions span multiple spaces.
Partitions provide minimal protection.
Feb 2002 Mateti on "JavaSpace" 43
JavaSpaces is not aJavaSpaces is not a database database
All entries are copies of original objects No general query language No way to return sets of objects Not a transparent persistence
mechanism (can not modify data) Understand entry by type and serialized
fields
Feb 2002 Mateti on "JavaSpace" 44
Applications (Model)Applications (Model)
Identities
JavaSpaces server
JavaSpaces server
JavaSpaces server
Client
Client
EventCatcherTransaction
notify
notifywrite
take
write
writeEvent
write
read
Security
Check
proxy
notify
Feb 2002 Mateti on "JavaSpace" 45
An application scenario: Stock trading systemAn application scenario: Stock trading system
Entry fields:– securities, owners price offers, quantities, ...
GUI:– applets
Many sellers and buyers can beinvolved– concurrent accesses are handled
by the space
buyer
seller
JavaSpacesServer entry
Write
bid entry Write
Notify
Live feed applet
read
graphic applet
Feb 2002 Mateti on "JavaSpace" 46
ApplicationsApplications
Workflow systems Customer management systems Supply chain management Auction systems Trading service Agent systems Publish and subscribe service…...
Feb 2002 Mateti on "JavaSpace" 47
JavaSpaces ServerJavaSpaces Server
Not a remote interfaceinvocations of methods of
JavaSpace throw RemoteException JavaSpaces server exports objects
implementing javaspace interface to clients
Feb 2002 Mateti on "JavaSpace" 48
JavaSpace ServerJavaSpace Server
JavaSpace
JavaSpace
ServerInterface
JavaSpace ServerClient
Client
Feb 2002 Mateti on "JavaSpace" 49
Entry implementation ExampleEntry implementation Example
import net.jini.space.Entrypublic class MyEntry implements Entry {
public String name;public GIFImage value;public MyEntry(){
}}
Feb 2002 Mateti on "JavaSpace" 50
Sample implementationSample implementation
RequirementsEntry implementationSample invocation
Feb 2002 Mateti on "JavaSpace" 51
Sample invocationSample invocation
import net.jini.impl.outrigger.binders.RefHolderpublic class HelloWorld {
public JavaSpace getSpace() {RefHolder rh = (RefHolder)
Naming.lookup(“JavaSpace”);JavaSpace js = (JavaSpace) rh.proxy();
}}
Feb 2002 Mateti on "JavaSpace" 52
Sample invocationSample invocation
JavaSpace space = getSpace();MyEntry e = new MyEntry();e.name =“Duke”;e.value= new GIFImage
(“dukeWave.gif”);space.write(e, null, 60*60*1000);
Feb 2002 Mateti on "JavaSpace" 53
Supporting packagesSupporting packages
LeasingTransactionDistributed Event/Listener
Feb 2002 Mateti on "JavaSpace" 54
Third-party agentsThird-party agents
Obj1 Obj3
Obj2 Obj4
Server Server
Feb 2002 Mateti on "JavaSpace" 55
Jini lookup service: Jini lookup service: reggiereggie
Reggie is an activatable processIt just registers itself with rmidRmid activates it as necessary
top related