Presentation is loading. Please wait.

Presentation is loading. Please wait.

JavaSpaces Prabhaker Mateti Wright State University.

Similar presentations


Presentation on theme: "JavaSpaces Prabhaker Mateti Wright State University."— Presentation transcript:

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


Download ppt "JavaSpaces Prabhaker Mateti Wright State University."

Similar presentations


Ads by Google