Table of Contents
preface xiii
acknowledgment xiv
guide to this book xv
intended audience xvi
author online xvii
about the cover xviii
Part I Sockets Programming
3 Chapter 1 Introduction to distributed programming
1.1 Introduction 3
1.2 Overview of internetworking 4
1.3 Introduction to distributed programming 7
1.4 Distributed programming techniques 8
1.5 Distributed programming support in Java 10
1.6 Network mobility 12
1.7 Overview of Java security 12
1.8 Summary 14
15 Chapter 2 Introduciton to sockets probramming
2.1 Interprocess communication 15
2.2 What are sockets? 16
2.3 TCP/IP and UDP/IP communications 18
2.4 Client/Server communication 19
2.5 Sockets programming in Java 19
2.6 Greetings server example 24
2.7 Resolving Internet addresses 28
2.8 Summary 31
33 Chapter 3 rogramming clients and servers
3.1 Programming clients for existing services 33
3.2 Programming with threads 40
3.3 Programming new services and clients 46
3.4 Summary 51
53 Chapter 4 Sockets in real-world applications
4.1 Developing a multithreaded HTTP server 54
4.2 Security in HTTP 57
4.3 Proxy servers 58
4.4 Database access via sockets 60
4.5 JDBC explained 60
4.6 Summary 67
69 Chapter 5 Advanced sockets programming
5.1 Object serialization 69
5.2 Objects over sockets 74
5.3 Digitally signed messages 78
5.4 Summary 84
68 Chapter 6 Case study: a global compute engine
6.1 Introduction 86
6.2 Global web-based computing 86
6.3 Why not CGI? 87
6.4 The client/server model 89
6.5 Security issues 89
6.6 Implementation details 89
6.7 Other issues 100
6.8 Summary 101
Part II RMI
105 Chapter 7 Overview of RMI
7.1 Introduction to RMI 105
7.2 What is RMI? 106
7.3 The goals of RMI 107
7.4 The RMI system architecture 107
7.5 How RMI works 109
7.6 Distributed garbage collection 109
7.7 RMI and the OSI reference model 110
7.8 Security 110
7.9 Summary 111
113 Chapter 8 Getting started with RMI
8.1 Anatomy of an RMI-based application 113
8.2 Working with the RMI registry 120
8.3 RMI vs. sockets 122
8.4 Summary 122
123 Chapter 9 Advanced RMI programming
9.1 The city information server 124
9.2 Implementing factories 126
9.3 Implementing callbacks 130
9.4 Signing objects over RMI 134
9.5 Summary 137
139 Chapter 10 RMI programming with Java 2
10.1 Creating a custom socket type 140
10.2 Creating a custom RMISocketFactory 140
10.3 SSL sockets 142
10.4 Remote object activation 143
10.5 Version control 146
10.6 Summary 149
Part III CORBA
153 Chapter 11 Overview of CORBA
11.1 Introduction to CORBA 153
11.2 CORBA architecture 154
11.3 Client and object implementations 157
11.4 Object services 157
11.5 New features in CORBA 3.0 159
11.6 Summary 160
163 Chapter 12 Getting started with CORBA
12.1 CORBA implementations 163
12.2 Anatomy of a CORBA-based application 164
12.3 CORBA vs. RMI 170
12.4 Summary 170
173 Chapter 13 CORBA IDL: The interface deŻnition language
13.1 IDL definitions 173
13.2 IDL interfaces 175
13.3 Module declaration 175
13.4 Attribute declaration 176
13.5 Type declaration 176
13.6 Arrays 178
13.7 Typedef declaration 179
13.8 Constant declaration 179
13.9 Exception declaration 179
13.10 Operations declaration 180
13.11 Pre-processing 181
13.12 Keywords 181
13.13 Summary 181
183 Chapter 14 IDL-to-Java mapping
14.1 Names 183
14.2 Modules 184
14.3 Holder classes 184
14.4 Constant values 186
14.5 Basic types 186
14.6 Constructed types 189
14.7 Exceptions 192
14.8 Interfaces 193
14.9 Typedef mapping 195
14.10 Summary 196
197 Chapter 15 Naming and binding
15.1 A banking application 197
15.2 Naming objects 202
15.3 Binding to objects 203
15.4 Summary 205
207 Chapter 16 Registering and activating objects
16.1 The basic object adapter 207
16.2 Object activation modes 208
16.3 Object references 208
16.4 Registering an object 209
16.5 The implementation repository 210
16.6 Summary 211
213 Chapter 17 Inheritance and the tie mechanism
17.1 Interface inheritance 213
17.2 The tie mechanism 214
17.3 Summary 216
219 Chapter 18 The Dynamic Invocation/Skeleton Interface
18.1 The Dynamic Invocation Interface 219
18.2 The Dynamic Skeleton Interface 222
18.3 The interface repository 223
18.4 Summary 224
225 Chapter 19 Caffeine
19.1 Overview of Caffeine 225
19.2 Using the java2iiop compiler 226
19.3 Anatomy of a Caffeine-based application 226
19.4 Data type mapping 230
19.5 Summary 231
Part IV Mobile Agents and Voyager
235 Chapter 20 Overview of mobile software agents
20.1 Introduction to software agents 235
20.2 Mobile software agents 236
20.3 A new paradigm for distributed computing 236
20.4 Mobile agent applications 237
20.5 Security in mobile agents 239
20.6 Mobile agent implementations 239
20.7 Summary 241
243 Chapter 21 Getting started with Voyager
21.1 Overview 243
21.2 Working with Voyager 244
21.3 Summary 253
255 Chapter 22 Programming mobile agents
22.1 Dynamic aggregation 256
22.2 Mobility 260
22.3 Mobile agents 264
22.4 Summary 269
271 Chapter 23 Advanced Voyager programming
23.1 Security 271
23.2 Advanced messaging 273
23.3 Publish/subscribe 273
23.4 Activation 275
23.5 Timers 276
23.6 Summary 277
279 Chapter 24 Voyager and CORBA integration
24.1 Programming with Voyager CORBA 279
24.2 Anatomy of a Voyager CORBA application 280
24.3 Voyager CORBA integration 283
24.4 Summary 289
291 Bibliography
292 Online references
295 Index