Download Jini

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
CS 603
Jini
April 10, 2002
What is Jini?
Java Middleware
•
Tools to construct federation
– Multiple devices, each with Java Virtual Machine
– Multiple services
•
•
Uses (doesn’t replace) Java RMI
Adds infrastructure to support distribution
– Registration
– Lookup
– Security
Service
• Basic “unit” of JINI system
– Members provide services
– Federate to share access to services
• Services combined to accomplish tasks
• Communicate using service protocol
– Initial set defined
– Add more on the fly
Infrastructure:
Key Components
• RMI
– Basic communication model
• Distributed Security System
– Integrated with RMI
– Extends JVM security model
• Discovery/join protocol
– How to register and advertise services
• Lookup services
– Returns object implementing service (really a local
proxy)
Programming Model
• Lookup
• Leasing
– Extends Java reference with notion of time
• Events
– Extends JavaBeans event model
– Adds third-party transfer, delivery and
timeliness guarantees, possibility of delay
• Transaction Interfaces
Jini Component Categories
• Infrastructure – Base features
• Programming Model – How you use them
• Services – What you build
Java / Jini Comparison
Lookup Service
• Describes functionality
• Describes interface
• Lookup is a service
– Can be referenced in another lookup service
– Also register lookup with non-Jini naming
• Registering
– Discovery protocol: Find a lookup service
– Join protocol: Register with the lookup
service
Registration
Sample Server
public class SendHelloServer implements
DiscoveryListener {
protected LeaseRenewalManager leaseManager
= new LeaseRenewalManager();
public static void main(String argv[]) {
new SendHelloServer();
// keep server running to allow time for locator
// discovery and keep re-registering the lease
Thread.currentThread().sleep(Lease.FOREVER);
}
public SendHello() {
LookupDiscovery discover = null;
// Prepare for discovery - empty here
// Discover a lookup service
// This uses the asynchronous multicast protocol,
// which calls back into the discovered() method
discover = new LookupDiscovery(
LookupDiscovery.ALL_GROUPS);
discover.addDiscoveryListener(this);
}
public void discovered(DiscoveryEvent evt) {
ServiceRegistrar registrar = evt.getRegistrars()[0];
// At this point we have discovered a lookup service
// Create information about a service
ServiceItem item = new ServiceItem(null, new
SendHelloImpl(), null);
// Export a service
ServiceRegistration reg = registrar.register(item,
Lease.FOREVER);
// Renew leasing
leaseManager.renewUntil(reg.getLease(), Lease.FOREVER,
this);
}
} // SendHelloServer
Invocation
Sample Client
public class Hello {
public static void main(String
argv[ ]) { new Hello(); }
public Hello() {
LookupLocator lookup = null;
ServiceRegistrar registrar = null;
FileClassifier classifier = null;
// Prepare for discovery
lookup = new LookupLocator(
"jini://www.simple_stuff.com");
// Discover a lookup service
// This uses the synchronous
unicast protocol
registrar = lookup.getRegistrar();
// Prepare a template for lookup
search
Class[ ] classes = new Class[ ]
{SendHello.class};
ServiceTemplate template = new
ServiceTemplate(
null, classes, null);
// Lookup a service
sender = (SendHello)
registrar.lookup(template);
// Call the service
System.out.println(
sender.SendHello());
}
} // Hello
Security
• Principal: Authenticated user making
request
• Access control list: What principals can
use a service
• JVM security mechanisms ensure services
don’t compromise local machine
Leasing
• Lease: Right to access a service
– Guarantees access for specified time period
• Negotiated as part of service protocol
• Allows freeing resource by either end,
without explicit negotiation
– Fault tolerance
• Exclusive vs. Non-exclusive
– Exclusive: Non-shared resource
– Non-exclusive: Allows sharing resource
Transactions
• Operations can be wrapped in transaction
– What is done in transaction is up to operation
– Notion of what “commit” or “abort” means isn’t
specified
Abort may even change state of system!
• Jini provides two-phase commit protocol
– Secure, fault tolerant commit / abort
– No semantics enforced by Jini
Events
•
•
•
•
Notification system
Object must support/define events
Other objects can register for notification
Jini handles communication / reliability
issues