search for books and compare prices
Tables of Contents for The Jini Specification
Chapter/Section Title
Page #
Page Count
Foreword
xvii
2
Preface
xix
 
PART 1 Overview and Examples
3
58
The Jini Architecture: An Introduction
3
1
1 Overview
3
16
1.1 Goals
4
1
1.2 Architecture
5
2
1.3 What the Jini Architecture Depends Upon
7
1
1.4 The Value of a Proxy
7
2
1.5 The Lookup Service
9
5
1.5.1 Attributes
10
1
1.5.2 Membership Management
11
1
1.5.3 Lookup Groups
12
1
1.5.4 Lookup Service Compared to Naming/Directory Services
13
1
1.6 Conclusion
14
2
1.7 Notes on the Example Code
16
3
1.7.1 Package Structure
16
3
2 Writing a Client
19
10
2.1 The MessageStream Interface
19
1
2.2 The Client
20
7
2.3 In Conclusion
27
2
3 Writing a Service
29
32
3.1 Good Lookup Citizenship
29
1
3.1.1 The JoinManager Utility
30
1
3.2 The FortuneStream Service
30
7
3.2.1 The Implementation Design
32
1
3.2.2 Creating the Service
32
2
3.2.3 The Running Service
34
3
3.3 The ChatStream Service
37
20
3.3.1 "Service" versus "Server"
41
1
3.3.2 Creating the Service
41
2
3.3.3 The Chat Server
43
7
3.3.4 Implementing nextInLine
50
1
3.3.5 Notes on Improving ChatServerImpl
51
1
3.3.6 The Clients
52
5
4 The Rest of This Book
57
4
PART 2 The Jini Specification
61
232
AR The Jini Architecture Specification
61
22
AR.1 Introduction
61
4
AR.1.1 Goals of the System
61
2
AR.1.2 Environmental Assumptions
63
2
AR.2 System Overview
65
12
AR.2.1 Key Concepts
65
3
AR.2.1.1 Services
65
1
AR.2.1.2 Lookup Service
66
1
AR.2.1.3 Java Remote Method Invocation (RMI)
66
1
AR.2.1.4 Security
67
1
AR.2.1.5 Leasing
67
1
AR.2.1.6 Transactions
67
1
AR.2.1.7 Events
67
1
AR.2.2 Component Overview
68
4
AR.2.2.1 Infrastructure
69
1
AR.2.2.2 Programming Model
69
2
AR.2.2.3 Services
71
1
AR.2.3 Service Architecture
72
5
AR.2.3.1 Discovery and Lookup Protocols
72
3
AR.2.3.2 Service Implementation
75
2
AR.3 An Example
77
4
AR.3.1 Registering the Printer Service
77
1
AR.3.1.1 Discovering the Lookup Service
77
1
AR.3.1.2 Joining the Lookup Service
77
1
AR.3.1.3 Optional Configuration
78
1
AR.3.1.4 Staying Alive
78
1
AR.3.2 Printing
78
3
AR.3.2.1 Locate the Lookup Service
78
1
AR.3.2.2 Search for Printing Services
79
1
AR.3.2.3 Configuring the Printer
79
1
AR.3.2.4 Requesting That the Image Be Printed
79
1
AR.3.2.5 Registering for Notification
80
1
AR.3.2.6 Receiving Notification
80
1
AR.4 For More Information
81
2
DJ The Jini Discovery and Join Specification
83
28
DJ.1 Introduction
83
6
DJ.1.1 Terminology
83
1
DJ.1.2 Host Requirements
84
1
DJ.1.2.1 Protocol Stack Requirements for IP Networks
84
1
DJ.1.3 Protocol Overview
85
1
DJ.1.4 Discovery in Brief
85
3
DJ.1.4.1 Groups
85
1
DJ.1.4.2 The Multicast Request Protocol
86
1
DJ.1.4.3 The Multicast Announcement Protocol
87
1
DJ.1.4.4 The Unicast Discovery Protocol
88
1
DJ.1.5 Dependencies
88
1
DJ.2 The Discovery Protocols
89
12
DJ.2.1 Protocol Roles
89
1
DJ.2.2 The Multicast Request Protocol
89
4
DJ.2.2.1 Protocol Participants
89
1
DJ.2.2.2 The Multicast Request Service
90
1
DJ.2.2.3 Request Packet Format
91
2
DJ.2.2.4 The Multicast Response Service
93
1
DJ.2.3 Discovery Using the Multicast Request Protocol
93
2
DJ.2.3.1 Steps Taken by the Discovering Entity
93
1
DJ.2.3.2 Steps Taken by the Multicast Request Server
94
1
DJ.2.3.3 Handling Responses from Multiple Djinns
95
1
DJ.2.4 The Multicast Announcement Protocol
95
2
DJ.2.4.1 The Multicast Announcement Service
95
2
DJ.2.4.2 The Protocol
97
1
DJ.2.5 Unicast Discovery
97
4
DJ.2.5.1 The Protocol
98
1
DJ.2.5.2 Request Format
99
1
DJ.2.5.3 Response Format
100
1
DJ.3 The Join Protocol
101
4
DJ.3.1 Persistent State
101
1
DJ.3.2 The Join Protocol
101
4
DJ.3.2.1 Initial Discovery and Registration
102
1
DJ.3.2.2 Lease Renewal and Handling of Communication Problems
102
1
DJ.3.2.3 Making Changes and Performing Updates
103
1
DJ.3.2.4 Joining or Leaving a Group
103
2
DJ.4 Network Issues
105
2
DJ.4.1 Properties of the Underlying Transport
105
1
DJ.4.1.1 Limitations on Packet Sizes
105
1
DJ.4.2 Bridging Calls to the Discovery Request Service
105
1
DJ.4.3 Limiting the Scope of Multicasts
106
1
DJ.4.4 Using Multicast IP as the Underlying Transport
106
1
DJ.4.5 Address and Port Mappings for TCP and Multicast UDP
106
1
DJ.5 LookupLocator Class
107
4
DJ.5.1 Jini Technology URL Syntax
108
1
DJ.5.2 Serialized Form
109
2
DU The Jini Discovery Utilities Specification
111
16
DU.1 Introduction
111
2
DU.1.1 Dependencies
111
2
DU.2 Multicast Discovery Utility
113
6
DU.2.1 The LookupDiscovery Class
114
1
DU.2.2 Useful Constants
115
1
DU.2.3 Changing the Set of Groups to Discover
115
1
DU.2.4 The DiscoveryEvent Class
116
1
DU.2.5 The DiscoveryListener Interface
116
1
DU.2.6 Security and Multicast Discovery
117
1
DU.2.7 Serialized Forms
118
1
DU.3 Protocol Utilities
119
8
DU.3.1 Marshalling Multicast Requests
119
1
DU.3.2 Unmarshalling Multicast Requests
120
1
DU.3.3 Marshalling Multicast Announcements
121
1
DU.3.4 Unmarshalling Multicast Announcements
122
1
DU.3.5 Easy Access to Constants
122
1
DU.3.6 Marshalling Unicast Discovery Requests
123
1
DU.3.7 Unmarshalling Unicast Discovery Requests
123
1
DU.3.8 Marshalling Unicast Discovery Responses
124
1
DU.3.9 Unmarshalling Unicast Discovery Responses
124
3
EN The Jini Entry Specification
127
6
EN.1 Entries and Templates
127
6
EN.1.1 Operations
127
1
EN.1.2 Entry
128
1
EN.1.3 Serializing Entry Objects
128
1
EN.1.4 UnusableEntryException
129
2
EN.1.5 Templates and Matching
131
1
EN.1.6 Serialized Form
131
2
EU The Jini Entry Utilities Specification
133
4
EU.1 Entry Utilities
133
4
EU.1.1 AbstractEntry
133
1
EU.1.2 Serialized Form
134
3
LE The Jini Distributed Leasing Specification
137
18
LE.1 Introduction
137
4
LE.1.1 Leasing and Distributed Systems
137
3
LE.1.2 Goals and Requirements
140
1
LE.1.3 Dependencies
140
1
LE.2 Basic Leasing Interfaces
141
8
LE.2.1 Characteristics of a Lease
141
1
LE.2.2 Basic Operations
142
5
LE.2.3 Leasing and Time
147
1
LE.2.4 Serialized Forms
148
1
LE.3 Example Supporting Classes
149
6
LE.3.1 A Renewal Class
149
2
LE.3.2 A Renewal Service
151
4
EV The Jini Distributed Event Specification
155
30
EV.1 Introduction
155
4
EV.1.1 Distributed Events and Notifications
155
1
EV.1.2 Goals and Requirements
156
1
EV.1.3 Dependencies
157
2
EV.2 The Basic Interfaces
159
12
EV.2.1 Entities Involved
159
2
EV.2.2 Overview of the Interfaces and Classes
161
2
EV.2.3 Details of the Interfaces and Classes
163
6
EV.2.3.1 The RemoteEventListener Interface
163
1
EV.2.3.2 The RemoteEvent Class
164
1
EV.2.3.3 The UnknownEventException
165
1
EV.2.3.4 An Example EventGenerator Interface
166
2
EV.2.3.5 The EventRegistration Class
168
1
EV.2.4 Sequence Numbers, Leasing and Transactions
169
1
EV.2.5 Serialized Forms
170
1
EV.3 Third-Party Objects
171
8
EV.3.1 Store-and-Forward Agents
171
2
EV.3.2 Notification Filters
173
2
EV.3.2.1 Notification Multiplexing
174
1
EV.3.2.2 Notification Demultiplexing
174
1
EV.3.3 Notification Mailboxes
175
1
EV.3.4 Compositionality
176
3
EV.4 Integration with JavaBeans Components
179
6
EV.4.1 Differences with the JavaBeans Component Event Model
180
2
EV.4.2 Converting Distributed Events to JavaBeans Events
182
3
TX The Jini Transaction Specification
185
32
TX.1 Introduction
185
6
TX.1.1 Model and Terms
186
2
TX.1.2 Distributed Transactions and ACID Properties
188
1
TX.1.3 Requirements
189
1
TX.1.4 Dependencies
190
1
TX.2 The Two-Phase Commit Protocol
191
16
TX.2.1 Starting a Transaction
192
1
TX.2.2 Starting a Nested Transaction
193
2
TX.2.3 Joining a Transaction
195
1
TX.2.4 Transaction States
196
1
TX.2.5 Completing a Transaction: The Client's View
197
2
TX.2.6 Completing a Transaction: A Participant's View
199
3
TX.2.7 Completing a Transaction: The Manager's View
202
2
TX.2.8 Crash Recovery
204
1
TX.2.8.1 The Roll Decision
205
1
TX.2.9 Durability
205
2
TX.3 Default Transaction Semantics
207
10
TX.3.1 Transaction and NestableTransaction Interfaces
207
2
TX.3.2 TransactionFactory Class
209
1
TX.3.3 ServerTransaction and NestableServerTransaction Classes
210
2
TX.3.4 CannotNestException Class
212
1
TX.3.5 Semantics
212
2
TX.3.6 Serialized Forms
214
3
LU The Jini Lookup Service Specification
217
16
LU.1 Introduction
217
4
LU.1.1 The Lookup Service Model
217
1
LU.1.2 Attributes
218
1
LU.1.3 Dependencies
219
2
LU.2 The ServiceRegistrar
221
12
LU.2.1 ServiceID
221
1
LU.2.2 ServiceItem
222
1
LU.2.3 ServiceTemplate and Item Matching
223
1
LU.2.4 Other Supporting Types
224
1
LU.2.5 ServiceRegistrar
225
4
LU.2.6 ServiceRegistration
229
1
LU.2.7 Serialized Forms
230
3
LS The Jini Lookup Attribute Schema Specification
233
20
LS.1 Introduction
233
4
LS.1.1 Terminology
234
1
LS.1.2 Design Issues
234
1
LS.1.3 Dependencies
235
2
LS.2 Human Access to Attributes
237
2
LS.2.1 Providing a Single View of an Attribute's Value
237
2
LS.3 JavaBeans Components and Design Patterns
239
4
LS.3.1 Allowing Display and Modification of Attributes
239
1
LS.3.1.1 Using JavaBeans Components with Entry Classes
239
1
LS.3.2 Associating JavaBeans Components with Entry Classes
240
1
LS.3.3 Supporting Interfaces and Classes
241
2
LS.4 Generic Attribute Classes
243
10
LS.4.1 Indicating User Modifiability
243
1
LS.4.2 Basic Service Information
243
2
LS.4.3 More Specific Information
245
1
LS.4.4 Naming a Service
246
1
LS.4.5 Adding a Comment to a Service
246
1
LS.4.6 Physical Location
247
1
LS.4.7 Status Information
248
1
LS.4.8 Serialized Forms
249
4
JS The JavaSpaces Specification
253
24
JS.1 Introduction
253
8
JS.1.1 The JavaSpaces Application Model and Terms
253
3
JS.1.1.1 Distributed Persistence
254
1
JS.1.1.2 Distributed Algorithms as Flows of Objects
254
2
JS.1.2 Benefits
256
1
JS.1.3 JavaSpaces Technology and Databases
257
1
JS.1.4 JavaSpaces System Design and Linda Systems
258
1
JS.1.5 Goals and Requirements
259
1
JS.1.6 Dependencies
260
1
JS.2 Operations
261
8
JS.2.1 Entries
261
1
JS.2.2 net.jini.space.JavaSpace
262
2
JS.2.2.1 InternalSpaceException
263
1
JS.2.3 write
264
1
JS.2.4 readIfExists and read
264
1
JS.2.5 takeIfExists and take
265
1
JS.2.6 snapshot
265
1
JS.2.7 notify
266
2
JS.2.8 Operation Ordering
268
1
JS.2.9 Serialized Form
268
1
JS.3 Transactions
269
4
JS.3.1 Operations under Transactions
269
1
JS.3.2 Transactions and ACID Properties
270
3
JS.4 Further Reading
273
4
JS.4.1 Linda Systems
273
1
JS.4.2 The Java Platform
273
1
JS.4.3 Distributed Computing
274
3
DA The Jini Device Architecture Specification
277
16
DA.1 Introduction
277
4
DA.1.1 Requirements from the Jini Lookup Service
278
3
DA.2 Basic Device Architecture Examples
281
12
DA.2.1 Devices with Resident Java Virtual Machines
281
2
DA.2.2 Devices Using Specialized Virtual Machines
283
1
DA.2.3 Clustering Devices with a Shared Virtual Machine (Physical Option)
284
2
DA.2.4 Clustering Devices with a Shared Virtual Machine (Network Option)
286
2
DA.2.5 Jini Software Services over the Internet Inter-Operability Protocol
288
5
PART 3 Supplemental Material
293
78
The Jini Technology Glossary
293
14
Appendix A: A Note on Distributed Computing
307
20
A.1 Introduction
307
1
A.1.1 Terminology
308
1
A.2 The Vision of Unified Objects
308
3
A.3 Deja Vu All Over Again
311
1
A.4 Local and Distributed Computing
312
4
A.4.1 Latency
312
2
A.4.2 Memory Access
314
2
A.5 Partial Failure and Concurrency
316
2
A.6 The Myth of "Quality of Service"
318
2
A.7 Lessons From NFS
320
2
A.8 Taking the Difference Seriously
322
2
A.9 A Middle Ground
324
1
A.10 References
325
1
A.11 Observations for this Reprinting
326
1
Appendix B: The Example Code
327
44
Index
371
14
Colophon
385