1/41
Contents
List of Examples
List of Figures
List of Tables
Title and Copyright Information
Preface
Audience
Documentation Accessibility
Related Documents
Conventions
Part I Coherence for C++
1
Requirements, Installation, and Deployment for Coherence for C++
1.1
Package Requirements
1.2
Supported Environments
1.3
Installing Coherence for C++
1.4
Building Coherence-Based Applications
1.4.1
Compiler Settings
1.4.2
Coherence Header Files
1.4.3
Linking
1.4.4
Runtime Library and Search Path
1.5
Deploying Coherence for C++
2
Understanding the Coherence C++ Object Model
2.1
Using the Object Model
2.1.1
Coherence Namespaces
2.1.2
Understanding the Base Object
2.1.3
Automatically Managed Memory
2.1.3.1
Referencing Managed Objects
2.1.3.2
Using handles
2.1.3.3
Managed Object Instantiation
2.1.4
Managed Strings
2.1.4.1
String Instantiation
2.1.4.2
Auto-Boxed Strings
2.1.5
Type Safe Casting
2.1.5.1
Down Casting
2.1.6
Managed Arrays
2.1.7
Collection Classes
2.1.8
Managed Exceptions
2.1.9
Object Immutability
2.1.10
Integrating Existing Classes into the Object Model
2.2
Writing New Managed Classes
2.2.1
Specification-Based Managed Class Definition
2.2.2
Equality, Hashing, Cloning, Immutability, and Serialization
2.2.3
Threading
2.2.4
Weak References
2.2.5
Virtual Constructors
2.2.6
Advanced Handle Types
2.2.7
Thread Safety
2.2.8
Synchronization and Notification
2.2.9
Thread Safe Handles
2.3
Diagnostics and Troubleshooting
2.3.1
Thread Dumps
2.3.2
Memory Leak Detection
2.3.3
Memory Corruption Detection
3
Building Integration Objects for C++ Clients
3.1
Serialization Options
3.1.1
Managed<T> (Free-Function Serialization)
3.1.2
PortableObject (Self-Serialization)
3.1.3
PofSerializer (External Serialization)
3.2
POF Registration
3.3
Need for Java Classes
3.4
Performance
4
Configuration and Usage for C++ Clients
4.1
General Instructions
4.2
Implementing the C++ Application
4.3
Compiling and Linking the Application
4.4
Configure Paths
4.5
Configure Coherence*Extend
4.5.1
Configure Coherence*Extend in the Cluster
4.5.2
Configuring Coherence*Extend on the Client
4.5.3
Connection Error Detection and Failover
4.6
Configuring and Using the Coherence for C++ Client Library
4.6.1
Setting the Configuration File Location with an Environment Variable
4.6.2
Setting the Configuration File Location Programmatically
4.7
Operational Configuration File (tangosol-coherence-override.xml)
4.8
Configuring a Logger
4.9
Launching a Coherence DefaultCacheServer Proxy
5
Understanding the Coherence for C++ API
5.1
CacheFactory
5.2
NamedCache
5.3
QueryMap
5.4
ObservableMap
5.5
InvocableMap
5.6
Filter
5.7
Value Extractors
5.8
Entry Processors
5.9
Entry Aggregators
6
Sample Applications for C++ Clients
6.1
Prerequisites for Building and Running the Sample Applications
6.2
Starting a Coherence Proxy Service and Cache Server
6.3
Building the Sample Applications
6.4
Starting a Sample Application
6.5
Running the console Example
6.6
Running the hellogrid Example
6.7
Running the contacts Example
7
Configuring a Local Cache for C++ Clients
7.1
Configuring the Local Cache
7.2
Obtaining a Local Cache Reference for C++ Clients
7.3
Cleaning Up Resources Associated with a LocalCache
8
Configuring a Near Cache for C++ Clients
8.1
Configuring the Near Cache
8.2
Obtaining a Near Cache Reference with C++
8.3
Cleaning up Resources Associated with a Near Cache
9
Perform Continuous Query for C++ Clients
9.1
Uses of Continuous Query Caching
9.2
The Coherence Continuous Query Cache
9.3
Defining a Continuous Query Cache
9.4
Cleaning up Resources Associated with a Continuous Query Cache
9.5
Caching Only Keys, or Caching Both Keys and Values
9.5.1
CacheValues Property and Event Listeners
9.5.2
Using ReflectionExtractor with Continuous Query Caches
9.6
Listening to the Continuous Query Cache
9.6.1
Avoiding Unexpected Results
9.6.2
Achieving a Stable Materialized View
9.6.3
Support for Synchronous and Asynchronous Listeners
9.7
Making the Continuous Query Cache Read-Only
10
Query the Cache for C++ Clients
10.1
Query Functionality
10.2
Simple Queries
10.2.1
Querying Partitioned Caches
10.2.2
Querying Near Caches
10.3
Query Concepts
10.4
Queries Involving Multi-Value Attributes
10.5
ChainedExtractor
11
Remote Invocation Service for C++ Clients
11.1
Configuring and Using the Remote Invocation Service
11.2
Registering Invocable Implementation Classes
12
Deliver Events for Changes as they Occur (C++)
12.1
Listener Interface and Event Object
12.2
Caches and Classes that Support Events
12.3
Signing Up for all Events
12.4
MultiplexingMapListener
12.5
Configuring a MapListener for a Cache
12.6
Signing Up for Events on Specific Identities
12.7
Filtering Events
12.8
"Lite" Events
12.9
Advanced: Listening to Queries
12.10
Advanced: Synthetic Events
12.11
Advanced: Backing Map Events
12.12
Advanced: Synchronous Event Listeners
12.13
Summary
Part II Coherence for .NET
13
Requirements, Installation and Deployment for Coherence for .NET
13.1
Package Requirements
13.2
Installation
13.3
Deployment
14
Configuration and Usage for .NET Clients
14.1
General Instructions
14.2
Configuring Coherence*Extend
14.2.1
Configuring Coherence*Extend in the Cluster
14.2.2
Configuring Coherence*Extend on the Client
14.2.3
Connection Error Detection and Failover
15
Building Integratable Objects for .NET Clients
15.1
Configuring a POF Context
15.1.1
Creating an IPortableObject Implementation (.NET)
15.1.2
Creating a PortableObject Implementation (Java)
15.1.3
Registering Custom Types on the .NET Client
15.1.4
Registering Custom Types in the Cluster
15.1.5
Evolvable Portable User Types
15.1.6
Making Types Portable Without Modification
15.2
Configuring and Using the Coherence for .NET Client Library
15.2.1
CacheFactory
15.2.2
IConfigurableCacheFactory
15.2.3
DefaultConfigurableCacheFactory
15.2.4
Logger
15.2.5
Using the Common.Logging Library
15.2.6
INamedCache
15.2.7
IQueryCache
15.2.8
IObservableCache
15.2.9
IInvocableCache
15.2.10
Filters
15.2.11
Extractors
15.2.12
Processors
15.2.13
Aggregators
15.3
Launching a Coherence DefaultCacheServer Process
16
Configuring a Local Cache for .NET Clients
16.1
Configuring the Local Cache
16.2
Obtaining a Local Cache Reference for .NET Clients
16.3
Cleaning Up Resources Associated with a LocalCache
17
Configuring a Near Cache for .NET Clients
17.1
Configuring the Near Cache
17.2
Obtaining a Near Cache Reference with .NET
17.3
Cleaning up Resources Associated with a NearCache
18
Continuous Query Cache for .NET Clients
18.1
Uses of Continuous Query Caching
18.2
The Continuous Query Cache
18.3
Constructing a Continuous Query Cache
18.4
Cleaning up Resources Associated with a ContinuousQueryCache
18.5
Semi- and Fully-Materialized Views
18.6
Listening to a Continuous Query Cache
18.6.1
Achieving a Stable Materialized View
18.6.2
Support for Synchronous and Asynchronous Listeners
18.7
Making a Continuous Query Cache Read-Only
19
Remote Invocation Service for .NET Clients
19.1
Configuring and Using the Remote Invocation Service
20
Special Considerations—Windows Forms Applications for .NET Clients
21
Special Considerations—Web Applications for .NET Clients
22
Network Filters for .NET Clients
22.1
Custom Filters
22.2
Configuring Filters
23
Sample Windows Forms Application for .NET Clients
23.1
General Instructions
23.2
Create a Windows Application Project
23.3
Add a Reference to the Coherence for .NET Library
23.4
Create an App.config File
23.5
Create Coherence for .NET Configuration Files
23.6
Create and Design the Application
23.7
Implement the Application
24
Sample Web Application for .NET Clients
24.1
General Instructions
24.2
Create an ASP.NET Project
24.3
Add a Reference to the Coherence for .NET Library
24.4
Configure the Web.config File
24.5
Create Coherence for .NET Configuration Files
24.6
Create the Web Form
24.7
Implement the Web Application
24.7.1
Global.asax File
24.7.2
Business Object Definition
24.7.3
Service Layer Implementation
24.7.4
Code-behind the ASP.NET Page
Part III Integration with WebLogic Server
25
Caching HTTP Sessions for WebLogic
25.1
Requirements
25.2
Install Coherence*Web on WebLogic 10.X
25.3
Configure WebLogic
25.4
Create the Counter Web Application
25.5
Modify the Counter Web Application to use Coherence*Web
25.6
Deploy the Application
25.7
Verify the Example
25.8
Summary
Part IV Integration with TopLink Essentials
26
Configuring Coherence for TopLink Essentials
26.1
Coherence and TopLink Essentials
26.1.1
Limitations
26.1.2
Conventions
26.2
Using the Coherence TopLinkCacheStore
26.2.1
Mapping the Persistent Classes
26.2.2
Configuring TopLink Essentials
26.2.2.1
Configuration with JPA Mappings
26.2.2.2
Configuration with TopLink Mappings
26.2.3
Configuring Coherence
27
Configuring Coherence for JPA
27.1
Limitations
27.2
Obtaining a JPA Implementation
27.3
Conventions
27.4
Using the Coherence JpaCacheStore
27.4.1
Mapping the Persistent Classes
27.4.2
Configuring JPA
27.4.3
Configuring Coherence
Part V Integration with Hibernate
28
Using Coherence as the Hibernate L2 Cache
28.1
Hibernate and Caching
28.2
Configuration and Tuning
28.3
Specifying a Coherence Cache Topology
28.4
Cache Concurrency Strategies
28.5
Query Cache
28.6
Fault-Tolerance
28.7
Deployment
29
Using Hibernate as a CacheStore for Coherence
29.1
Using the Coherence HibernateCacheStore
29.1.1
Configuring a HibernateCacheStore
29.1.2
Configuration Requirements
29.1.3
JDBC Isolation Level
29.1.4
Fault-Tolerance
29.1.5
Extending HibernateCacheStore
29.2
Creating a Hibernate CacheStore
29.2.1
Re-entrant Calls
29.3
Fully Cached DataSets
29.3.1
Distributed Queries
29.3.2
Detached Processing
A
Sample C++ Applications
A.1
Sample Code for the console Example
A.2
Sample Code for the contacts Example
A.2.1
ContactInfo.hpp
A.2.2
ContactInfo.cpp
A.2.3
PortableContactInfo.hpp
A.2.4
PortableContactInfo.cpp
A.2.5
contacts.cpp
A.3
Sample Code for the hellogrid Example
A.3.1
Basic Cache Access
A.3.2
STL-like Map Adapter
A.3.3
InvocableMap Aggregation
A.3.4
Query the Cache
A.3.5
Continuous Query Cache
A.3.6
InvocableMap Invoke All