Download presentation
Presentation is loading. Please wait.
Published byNatalie Fletcher Modified over 9 years ago
1
JavaSpaces Prabhaker Mateti Wright State University
2
Feb 2002Mateti on "JavaSpace"2 Ack Ken Arnold Jan Newmarch Susanne Hupfer And many other sources on the Web
3
Feb 2002Mateti on "JavaSpace"3
4
Feb 2002Mateti on "JavaSpace"4 public 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
5
Feb 2002Mateti on "JavaSpace"5
6
Feb 2002Mateti on "JavaSpace"6 MP3Request 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; }
7
Feb 2002Mateti on "JavaSpace"7 From Jini … import net.jini.transaction.*; import net jini.event.*; import net.jini.lease.*;
8
Feb 2002Mateti on "JavaSpace"8 JavaSpaces Technology basis Built on core JDK facilities – RMI – Object serialization Part of Sun’s Jini package – Leasing – Transaction – Distributed events
9
Feb 2002Mateti on "JavaSpace"9 Jini JavaSpaceOther Lookup Service Discovery/Join Java RMI … services …
10
Feb 2002Mateti on "JavaSpace"10 JavaSpace 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()
11
Feb 2002Mateti on "JavaSpace"11 JavaSpaces architecture Entry/Template Serialization JavaSpace Scenario JavaSpaces/JavaSpace server JavaSpace Interface
12
Feb 2002Mateti on "JavaSpace"12 JavaSpace Service 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
13
Feb 2002Mateti on "JavaSpace"13 Why Use a JavaSpace? Cooperative, loosely-coupled systems scale well
14
Feb 2002Mateti on "JavaSpace"14 JavaSpaces 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
15
Feb 2002Mateti on "JavaSpace"15 JavaSapces Concepts: A mechanism for 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
16
Feb 2002Mateti on "JavaSpace"16 JavaSapces Concepts: A networked repository for Java Objects Entries Store Entries (Serialized Java objects) Both data and behaviors Templates Lookup entries by using Templates Type matching (same class?) Value matching: lookup and compare the specific fields
17
Feb 2002Mateti on "JavaSpace"17 Service 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
18
Feb 2002Mateti on "JavaSpace"18 A 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); }
19
Feb 2002Mateti on "JavaSpace"19 Lookup 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
20
Feb 2002Mateti on "JavaSpace"20 Entry 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
21
Feb 2002Mateti on "JavaSpace"21 An Example Entry class User implements Entry { public String login; public String homeHost; public String fullName; public Long lastLogin; //... }
22
Feb 2002Mateti on "JavaSpace"22 Entry 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
23
Feb 2002Mateti on "JavaSpace"23 Lease write (Entry e, Transaction t, long lease) Write a copy of e into Space returns a Lease object limited persistence with time-outs exceptions
24
Feb 2002Mateti on "JavaSpace"24 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
25
Feb 2002Mateti on "JavaSpace"25 Template Entry object Some/all fields set to specific values Null fields act as wildcards Exact value match of each non-null field
26
Feb 2002Mateti on "JavaSpace"26 Template Type matching and subtype matching Only public fields are considered for matching Fields should refer to serializable objects Fields must have properties
27
Feb 2002Mateti on "JavaSpace"27 Entry Matching Matching requires a template The service is searched for one entry that... Is at least the template's type Has all values matching
28
Feb 2002Mateti on "JavaSpace"28 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.
29
Feb 2002Mateti on "JavaSpace"29 public Entry read (Entry e, Transaction t, 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
30
Feb 2002Mateti on "JavaSpace"30 Entry take(Entry tmpl, Transaction t, long timeout) Matching object is removed from space RemoteException: Entry may or may not be removed successfully Other Exceptions mean failure Subtype matching: returns may be more than anticipated
31
Feb 2002Mateti on "JavaSpace"31 Serialization 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
32
Feb 2002Mateti on "JavaSpace"32 notify EventRegistration notify(Entry tmplt, Transaction t, RemoteEventListener l, long lease, MarshalledObject handback) RemoteEvent RemoteEventListener EventRegistraion{ evID fromWhom seqNo } retry to notify listeners
33
Feb 2002Mateti on "JavaSpace"33 JaveSpaces Scenario JavaSpaces RMI Leasing Distributed Event Transaction Entry
34
Feb 2002Mateti on "JavaSpace"34 Leasing 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 easily Negotiation among related parties Lease can be renewed or canceled
35
Feb 2002Mateti on "JavaSpace"35 Lease “ 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 service Typical Grantee: component
36
Feb 2002Mateti on "JavaSpace"36 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; }
37
Feb 2002Mateti on "JavaSpace"37 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
38
Feb 2002Mateti on "JavaSpace"38 Two-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.
39
Feb 2002Mateti on "JavaSpace"39 Jini 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
40
Feb 2002Mateti on "JavaSpace"40 Distributed Event Events in multi-address spaces Desired delay Network failure/Delay Third-party agents perform notification Non-Java third-party agents
41
Feb 2002Mateti on "JavaSpace"41 Multiple JavaSpaces Multiple JavaSpaces cooperate, and transactions span multiple spaces. Partitions provide minimal protection.
42
Feb 2002Mateti on "JavaSpace"42 Scale It Up
43
Feb 2002Mateti on "JavaSpace"43 JavaSpaces is not a 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
44
Feb 2002Mateti on "JavaSpace"44 Applications (Model) Identities JavaSpaces server JavaSpaces server JavaSpaces server Client Event Catcher Transaction notify write take write writeEvent write read Security Check proxy notify
45
Feb 2002Mateti on "JavaSpace"45 An application scenario: Stock trading system Entry fields: – securities, owners price offers, quantities,... GUI: – applets Many sellers and buyers can be involved – concurrent accesses are handled by the space buyer seller JavaSpaces Server entry Write bid entry Write Notify Live feed applet read graphic applet
46
Feb 2002Mateti on "JavaSpace"46 Applications Workflow systems Customer management systems Supply chain management Auction systems Trading service Agent systems Publish and subscribe service …...
47
Feb 2002Mateti on "JavaSpace"47 JavaSpaces Server Not a remote interface invocations of methods of JavaSpace throw RemoteException JavaSpaces server exports objects implementing javaspace interface to clients
48
Feb 2002Mateti on "JavaSpace"48 JavaSpace Server JavaSpace Server Interface JavaSpace ServerClient
49
Feb 2002Mateti on "JavaSpace"49 Entry implementation Example import net.jini.space.Entry public class MyEntry implements Entry { public String name; public GIFImage value; public MyEntry(){ }
50
Feb 2002Mateti on "JavaSpace"50 Sample implementation Requirements Entry implementation Sample invocation
51
Feb 2002Mateti on "JavaSpace"51 Sample invocation import net.jini.impl.outrigger.binders.RefHolder public class HelloWorld { public JavaSpace getSpace() { RefHolder rh = (RefHolder) Naming.lookup(“JavaSpace”); JavaSpace js = (JavaSpace) rh.proxy(); }
52
Feb 2002Mateti on "JavaSpace"52 Sample invocation JavaSpace space = getSpace(); MyEntry e = new MyEntry(); e.name =“Duke”; e.value= new GIFImage (“dukeWave.gif”); space.write(e, null, 60*60*1000);
53
Feb 2002Mateti on "JavaSpace"53 Supporting packages Leasing Transaction Distributed Event/Listener
54
Feb 2002Mateti on "JavaSpace"54 Third-party agents Obj1 Obj3 Obj2 Obj4 Server
55
Feb 2002Mateti on "JavaSpace"55 Jini lookup service: reggie Reggie is an activatable process It just registers itself with rmid Rmid activates it as necessary
56
Feb 2002Mateti on "JavaSpace"56
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.