| |
| |
Preface | |
| |
| |
| |
Designing and Building: The Basics of RMI Applications | |
| |
| |
| |
Streams The Core Classes Viewing a File Layering Streams Readers and Writers | |
| |
| |
| |
Sockets Internet Definitions Sockets Server | |
| |
| |
Sockets Customizing Socket Behavior Special-Purpose Sockets Using SSL | |
| |
| |
| |
A Socket-Based Printer Server A Network-Based Printer | |
| |
| |
The Basic Objects | |
| |
| |
The Protocol | |
| |
| |
The Application Itself Evolving the Application | |
| |
| |
| |
The Same Server, Written Using RMI | |
| |
| |
The Basic Structure of RMI | |
| |
| |
The Architecture Diagram Revisited Implementing the Basic Objects | |
| |
| |
The Rest of the Server | |
| |
| |
The Client Application Summary | |
| |
| |
| |
Introducing the Bank Example | |
| |
| |
The Bank Example Sketching a Rough Architecture | |
| |
| |
The Basic Use Case Additional Design Decisions | |
| |
| |
A Distributed Architecture for the Bank Example | |
| |
| |
Problems That Arise in Distributed Applications | |
| |
| |
| |
Deciding on the Remote Server | |
| |
| |
A Little Bit of Bias | |
| |
| |
Important Questions | |
| |
| |
When Thinking About Servers Should We Implement Bank or Account? | |
| |
| |
| |
Designing the Remote Interface | |
| |
| |
Important Questions | |
| |
| |
When Designing Remote Interfaces | |
| |
| |
Building the Data Objects | |
| |
| |
Accounting for Partial Failure | |
| |
| |
| |
Implementing the Bank Server | |
| |
| |
The Structure of a Server | |
| |
| |
Implementing the Server | |
| |
| |
Generating Stubs and Skeletons | |
| |
| |
| |
The Rest of the Application | |
| |
| |
The Need for Launch Code Our Actual Launch Code Build Test Applications | |
| |
| |
Build the Client Application | |
| |
| |
Deploying the Application | |
| |
| |
| |
Drilling Down: Scalability | |
| |
| |
| |
Serialization The Need for Serialization | |
| |
| |
Using Serialization | |
| |
| |
How to Make a Class Serializable | |
| |
| |
The Serialization Algorithm Versioning | |
| |
| |
Classes Performance Issues | |
| |
| |
The Externalizable Interface | |
| |
| |
| |
Threads More Than One Client | |
| |
| |
Basic Terminology Threading | |
| |
| |
Concepts Support for Threads in Java | |
| |
| |
Deadlock Threading and RMI | |
| |
| |
| |
Implementing Threading | |
| |
| |
The Basic Task Guidelines for Threading Pools: An Extended Example | |
| |
| |
Some Final Words on Threading | |
| |
| |
| |
Testing a Distributed Application | |
| |
| |
Testing the Bank Application | |
| |
| |
| |
The RMI Registry Why Use a Naming Service? | |
| |
| |
The RMI Registry | |
| |
| |
The RMI Registry | |
| |
| |
Is an RMI Server Examining the Registry | |
| |
| |
Limitations of the RMI Registry Security Issues | |
| |
| |
| |
Naming Services Basic Design, Terminology, and Requirements | |
| |
| |
Requirements for Our Naming Service | |
| |
| |
Federation and Threading | |
| |
| |
The Context Interface | |
| |
| |
The Value Objects Context | |
| |
| |
Impl Switching Between Naming Services | |
| |
| |
The Java Naming and Directory Interface (JNDI) | |
| |
| |
| |
The RMI Runtime | |
| |
| |
Reviewing the Mechanics of a Remote | |
| |
| |
Method Call Distributed Garbage | |
| |
| |
Collection RMI's Logging | |
| |
| |
Facilities Other JVM Parameters | |
| |
| |
| |
Factories and the Activation Framework | |
| |
| |
Resource Management Factories | |
| |
| |
Implementing a Generic Factory | |
| |
| |
A Better Factory Persistence and the Server | |
| |
| |
Lifecycle Activation A Final Word About Factories | |
| |
| |
| |
Advanced Topics | |
| |
| |
| |
Using Custom Sockets Custom Socket | |
| |
| |
Factories Incorporating a Custom Socket into an Application | |
| |
| |
| |
Dynamic Classloading Deploying Can Be Difficult Classloaders | |
| |
| |
How Dynamic Classloading Works | |
| |
| |
The Class Server Using Dynamic | |
| |
| |
Classloading in an Application | |
| |
| |
| |
Security Policies A Different Kind of Security | |
| |
| |
Problem Permissions Security | |
| |
| |
Managers Setting Up a Security Policy | |
| |
| |
| |
Multithreaded Clients Different | |
| |
| |
Types of Remote Methods | |
| |
| |
Handling Printer-Type Methods | |
| |
| |
Handling Report-Type Methods | |
| |
| |
Generalizing from These Examples | |
| |
| |
| |
HTTP Tunneling Firewalls CGI and Dynamic | |
| |
| |
Content HTTP Tunneling A Servlet | |
| |
| |
Implementation of HTTP Tunneling | |
| |
| |
Modifying the Tunneling Mechanism | |
| |
| |
The Bank via HTTP Tunneling Drawbacks of HTTP Tunneling | |
| |
| |
Disabling HTTP Tunneling | |
| |
| |
| |
RMI, CORBA, and RMI/IIOP How CORBA Works | |
| |
| |
The Bank Example in CORBA | |
| |
| |
A Quick Comparison of CORBA and RMI | |
| |
| |
RMI on Top of CORBA | |
| |
| |
Converting the Bank Example to RMI/IIOP | |
| |
| |
Index | |