1/53
Contents
List of Examples
List of Figures
List of Tables
Title and Copyright Information
Preface
Audience
Documentation Accessibility
Related Documents
Conventions
Part I Coherence Features
1
Create and Use Coherence Caches
1.1
Creating a Cache in Your Application
1.2
Configuring the Caches
1.3
Cache Configuration Descriptor Location
1.4
Putting It all Together: Your First Coherence Cache Example
1.5
Setting Up Your Test Environment
1.6
Modifying the Cache Configuration
2
Implement Transactions, Locks, and Concurrency
2.1
Concurrency Options
2.2
Explicit Locking
2.3
Transactions
2.4
Container Integration
2.4.1
JCA
2.4.2
XA
2.5
Entry Processors
2.6
Data Source Integration
3
Perform Continuous Query
3.1
Uses of Continuous Query Caching
3.2
The Coherence Continuous Query Cache
3.3
Constructing a Continuous Query Cache
3.3.1
Cleaning up the resources associated with a ContinuousQueryCache
3.4
Caching only keys, or caching both keys and values
3.4.1
CacheValues Property and Event Listeners
3.5
Listening to the ContinuousQueryCache
3.5.1
Achieving a Stable Materialized View
3.5.2
Support for Synchronous and Asynchronous Listeners
3.6
Making the ContinuousQueryCache Read-Only
4
Managing Map Operations with Triggers
4.1
A Map Trigger Example
5
Data Affinity
5.1
Specifying Affinity
5.2
Specifying Data Affinity with a KeyAssociation
5.3
Specifying Data Affinity with a KeyAssociator
5.4
Example of Using Affinity
6
Query the Cache
6.1
Query Functionality
6.2
Simple Queries
6.2.1
Querying Partitioned Caches
6.2.2
Querying Near Caches
6.3
Query Concepts
6.4
Queries Involving Multi-Value Attributes
6.5
ChainedExtractor
7
Security Framework
7.1
Transport Layer Security
7.2
Access Controller
7.3
Proof of Identity
7.4
Proof of Trustworthiness
7.5
Default Access Controller implementation
7.6
Working in applications with installed security manager
8
Network Filters
8.1
Compression Filters
8.2
Encryption Filters
8.2.1
Symmetric Encryption Filter
8.2.2
Symmetric Encryption Filter Parameters
8.2.3
PKCS Encryption Filter
8.2.4
PKCS Encryption Filter Parameters
8.3
Configuring Filters
8.4
Creating a Custom Filter
9
Priority Tasks
9.1
Priority Tasks — Timeouts
9.1.1
Configuring Execution Timeouts
9.1.2
Execution Timeout Parameters
9.1.3
Command Line Options
9.2
Priority Task Execution — Custom Objects
9.2.1
APIs for Creating Priority Task Objects
9.2.2
Errors Thrown by Task Timeouts
10
Integrate CacheFactory with Spring
11
Specifying a Custom Eviction Policy
12
Serialization Paged Cache
12.1
Understanding Serialization Paged Cache
12.2
Configuring Serialization Paged Cache
12.3
Optimizing a Partitioned Cache Service
12.4
Configuring for High Availability
12.5
Configuring Load Balancing and Failover
12.6
Supporting Huge Caches
13
Pre-Loading the Cache
13.1
Performing Bulk Loading and Processing
13.1.1
Bulk Writing to a Cache
13.1.2
Efficient processing of filter results
13.1.3
A Bulk Loading and Processing Example
13.2
Performing Distributed Bulk Loading
13.2.1
A Distributed Bulk Loading Example
13.2.2
Running a Distributed Bulk Loading Example
13.2.2.1
Building the Sample Application
13.2.2.2
Running the Sample Application
14
Constraints on Re-entrant Calls
14.1
Re-entrancy, Services, and Service Threads
14.1.1
Parent-Child Object Relationships
14.1.2
Avoiding Deadlock
14.2
Re-entrancy and Listeners
Part II Testing and Tuning
15
Evaluating Performance and Scalability
15.1
Measuring Latency and Throughput
15.2
Demonstrating Scalability
15.3
Tuning Your Environment
15.4
Measurements on a Large Cluster
16
Performing a Multicast Connectivity Test
16.1
Running the Multicast Test Utility
16.1.1
Sample Commands
16.2
Multicast Test Example
16.3
Troubleshooting Multicast Communications
17
Performing a Datagram Test for Network Performance
17.1
Running the Datagram Test Utility
17.1.1
Sample Commands for a Listener and a Publisher
17.2
Datagram Test Example
17.3
Reporting
17.3.1
Publisher Statistics
17.3.2
Listener Statistics
17.3.2.1
Throttling
17.3.2.2
Bidirectional Testing
17.3.2.3
Distributed Testing
18
Configuring and Using Coherence*Extend
18.1
General Instructions
18.2
Configuring and Using Coherence*Extend-JMS
18.2.1
Client-side Cache Configuration Descriptor
18.2.2
Cluster-side Cache Configuration Descriptor
18.2.3
Configuring your JMS Provider
18.2.4
Launching an Extend-JMS DefaultCacheServer Process
18.2.5
Launching an Extend-JMS Client Application
18.3
Configuring and Using Coherence*Extend-TCP
18.3.1
Client-side Cache Configuration Descriptor
18.3.2
Cluster-side Cache (a.k.a Coherence Extend Proxy) Configuration Descriptor
18.3.3
Launching an Extend-TCP DefaultCacheServer Process
18.3.4
Launching an Extend-TCP Client Application
18.4
Sample Coherence*Extend Client Application
18.4.1
Coherence*Extend InvocationService
18.5
Advanced Configuration
18.5.1
Network Filters
18.5.2
Connection Error Detection and Failover
18.5.3
Read-only NamedCache Access
18.5.4
Client-side NamedCache Locking
18.5.5
Disabling Proxied Services
19
High Resolution Timesource (Linux)
20
Performance Tuning
20.1
Operating System Tuning
20.1.1
Socket Buffer Sizes
20.1.2
High Resolution timesource (Linux)
20.1.3
Datagram size (Microsoft Windows)
20.1.4
Thread Scheduling (Microsoft Windows)
20.1.5
Swapping
20.2
Network Tuning
20.2.1
Network Interface Settings
20.2.2
Bus Considerations
20.2.3
Network Infrastructure Settings
20.2.4
Ethernet Flow-Control
20.2.5
Path MTU
20.3
JVM Tuning
20.3.1
Server Mode
20.3.2
Sizing the Heap
20.3.3
GC Monitoring & Tuning
20.4
Coherence Network Tuning
20.4.1
Validation
21
Setting Single Server Mode
21.1
Setting Single Server Mode in the Operation Configuration Descriptor
21.2
Setting Single Server Mode on the Command Line
Part III Managing and Monitoring Oracle Coherence
22
How to Manage Coherence Using JMX
22.1
Add JMX libraries to the Coherence classpath
22.2
Configure the Coherence Management Framework
22.3
Access Coherence MBeans
22.4
Using Coherence MBeanConnector to Access MBeans
22.5
Configuring Management Refresh Methodology
23
JMX Reporter
23.1
Basic Configuration
23.2
Administration
23.3
Data Analysis
23.4
Advanced Configuration
23.4.1
Creating Custom Reports
23.4.2
Running Reporter in a Distributed Configuration
24
How to Create a Custom Report
24.1
Configuring a Report File
24.1.1
file-name Element
24.1.1.1
file-name Macros
24.1.1.2
file-name Macro Examples
24.2
Specifying Data Columns
24.2.1
How to Include an Attribute
24.2.2
How to Include Part of the Key
24.2.3
How to Include Information from Composite Attributes
24.2.4
How to Include Information from Multiple MBeans
24.2.5
Including Multiple MBean Information Example
24.2.6
How to Use Report Macros
24.2.7
How to Include Constant Values
24.3
Including Queries in a Report
24.4
Using Filters to Construct Reports
24.5
Using Functions to Construct a Report
24.5.1
Function Examples
24.6
Using Aggregates to Construct a Report
24.6.1
Aggregate Examples
24.7
Constructing Delta Functions
24.7.1
Delta Function Examples
25
How to Modify Report Batch
25.1
Report Batch Deployment Descriptor
25.1.1
Document Location
25.1.2
Document Root
25.1.3
System Properties
25.1.4
Document Format
Report Batch Element Index
frequency
location
init-param
init-params
output-directory
param-name
param-type
param-value
report-config
report-group
report-list
26
Analyzing Reporter Content
26.1
Network Health
26.2
Network Health Detail
26.3
Memory Status
26.4
Cache Size
26.5
Service Report
26.6
Node List
26.7
Proxy Report
27
How to Run a Report on Demand
27.1
How to Run ReportControl MBean at Node Startup
27.2
How to Configure the ReportControl MBean
28
Configuring Custom MBeans
28.1
Creating an MBean XML Configuration File
28.1.1
Configuring Standard MBeans
28.1.2
Configuring MXBeans
28.1.3
Configuring JMX MBeans
28.2
Enabling a Custom MBean Configuration File
28.2.1
Setting a System Property
28.2.2
Adding a Custom MBean Configuration File to the Class Path
29
How to Manage Custom MBeans Within the Cluster
29.1
Custom MBean Configuration
29.1.1
How to Add a Standard MBean to Coherence
29.1.2
How to Programatically Add a Standard MBean to Coherence
29.1.3
How to Add a the Results of a JMX Query to Coherence
A
Production Checklist
A.1
Network
A.2
Hardware
A.3
Operating System
A.4
JVM
A.5
Java Security Manager
A.6
Application Instrumentation
A.7
Coherence Editions and Modes
A.7.1
Ensuring that RTC nodes don't use Coherence TCMP
A.8
Coherence Operational Configuration
A.9
Coherence Cache Configuration
A.10
Large Cluster Configuration
A.11
Death Detection
A.12
tangosol-license.xml Deprecated
B
Types of Caches in Coherence
B.1
Replicated Cache
B.2
Optimistic Cache
B.3
Distributed (Partitioned) Cache
B.4
Near Cache
B.5
Summary of Cache Types
C
Cache Semantics
D
Cache Configuration Elements
D.1
Cache Configuration Deployment Descriptor
D.1.1
Document Location
D.1.2
Document Root
D.1.3
Document Format
D.1.4
Command Line Override
D.1.5
Examples
Element Index
acceptor-config
address-provider
async-store-manager
backup-storage
bdb-store-manager
bundle-config
cache-config
cache-mapping
cache-service-proxy
cachestore-scheme
caching-scheme-mapping
caching-schemes
class-scheme
custom-store-manager
disk-scheme
distributed-scheme
external-scheme
initiator-config
init-param
init-params
invocation-scheme
invocation-service-proxy
jms-acceptor
jms-initiator
key-associator
key-partitioning
lh-file-manager
listener
local-scheme
near-scheme
nio-file-manager
nio-memory-manager
operation-bundling
optimistic-scheme
outgoing-message-handler
overflow-scheme
paged-external-scheme
partition-listener
proxy-config
proxy-scheme
read-write-backing-map-scheme
remote-cache-scheme
remote-invocation-scheme
replicated-scheme
tcp-acceptor
tcp-initiator
version-persistent-scheme
version-transient-scheme
versioned-backing-map-scheme
versioned-near-scheme
E
Cache Configuration Parameter Macros
F
Sample Cache Configurations
F.1
Local Caches (accessible from a single JVM)
F.1.1
In-memory Cache
F.1.2
NIO In-memory Cache
F.1.3
Size Limited In-memory Cache
F.1.4
In-memory Cache with Expiring Entries
F.1.5
Cache on Disk
F.1.6
Size Limited Cache on Disk
F.1.7
Persistent Cache on Disk
F.1.8
In-memory Cache with Disk Based Overflow
F.1.9
Cache of a Database
F.2
Clustered Caches (accessible from multiple JVMs)
F.2.1
Replicated Cache
F.2.2
Replicated Cache with Overflow
F.2.3
Partitioned Cache
F.2.4
Partitioned Cache with Overflow
F.2.5
Partitioned Cache of a Database
F.2.6
Partitioned Cache with a Serializer
F.2.7
Local Cache of a Partitioned Cache (Near cache)
G
Sample CacheStores
G.1
Sample CacheStore
G.2
Sample Controllable CacheStore
H
Operational Configuration Elements
H.1
Operational Configuration Deployment Descriptors
H.1.1
Document Location
H.1.2
Document Root
H.1.3
Document Format
H.1.4
Operational Override File (tangosol-coherence-override.xml)
H.1.5
Command Line Override
Element Index
access-controller
authorized-hosts
burst-mode
callback-handler
cluster-config
coherence
configurable-cache-factory-config
filters
flow-control
host-range
incoming-message-handler
init-param
init-params
license-config
logging-config
management-config
member-identity
multicast-listener
notification-queueing
outgoing-message-handler
outstanding-packets
packet-buffer
packet-bundling
packet-pool
packet-delivery
packet-publisher
packet-size
packet-speaker
pause-detection
security-config
services
shutdown-listener
socket-address
tcp-ring-listener
traffic-jam
unicast-listener
volume-threshold
well-known-addresses
Element Attributes
I
Initialization Parameter Settings
DistributedCache Service Parameters
ReplicatedCache Service Parameters
InvocationService Parameters
ProxyService Parameters
Compression Filter Parameters
J
POF User Type Configuration Elements
J.1
POF User Type Deployment Descriptor
J.1.1
Document Location
J.1.2
Document Root
J.1.3
Document Format
J.1.4
Command Line Override
Element Index
allow-interfaces
allow-subclasses
class-name
include
init-param
init-params
param-type
param-value
pof-config
serializer
type-id
user-type
user-type-list
K
MBean Configuration Elements
K.1
MBeans in the Coherence Deployment Descriptor
K.1.1
Document Root
K.1.2
Document Format
MBean Configuration Element Index
extend-lifecycle
enabled
mbean
mbean-accessor
mbean-class
mbean-factory
mbean-name
mbean-query
mbeans
L
Command Line Overrides
L.1
Override Example
L.2
Preconfigured Override Values
M
Platform-Specific Deployment Considerations
M.1
Deploying to AIX
M.1.1
Socket Buffers sizes and JVMs
M.1.2
Multicast and IPv6
M.1.3
Unique Multicast Addresses and Ports
M.2
Deploying to BEA JRockit JVMs
M.2.1
JRockit and the Native Posix Thread Library (NPTL)
M.2.2
AtomicLong
M.3
Deploying to Cisco Switches
M.3.1
Buffer Space and Packet Pauses
M.3.2
Multicast Connectivity on Large Networks
M.3.3
Multicast Outages
M.4
Deploying to Foundry Switches
M.4.1
Multicast Connectivity
M.5
Deploying to IBM BladeCenters
M.5.1
MAC Address Uniformity and Load Balancing
M.6
Deploying to IBM JVMs
M.6.1
UDP Socket Buffer Sizes
M.7
Deploying to Linux
M.7.1
Native POSIX Thread Library (NPTL)
M.7.2
TSC High Resolution Timesource
M.8
Deploying to OS X
M.8.1
Multicast and IPv6
M.8.2
Unique Multicast Addresses and Ports
M.8.3
Socket Buffer Sizing
M.9
Deploying to Solaris
M.9.1
Solaris 10 (x86 and SPARC)
M.9.2
Solaris 10 Networking
M.10
Deploying to Sun JVMs
M.10.1
Heap Sizes
M.10.2
AtomicLong
M.11
Deploying to Virtual Machines
M.11.1
Supported Deployment
M.11.2
Multicast Connectivity
M.11.3
Performance
M.11.4
Fault Tolerance
M.12
Deploying to Windows
M.12.1
Performance Tuning
M.12.2
Personal Firewalls
M.13
Deploying to z OS
M.13.1
EBCDIC
M.13.2
Multicast
N
Best Practices for Coherence Extend
N.1
Run Proxy Servers with Local Storage Disabled
N.2
Do Not Run a Near Cache on a Proxy Server
N.3
Configure Heap NIO Space to be Equal to the Max Heap Size
N.4
Set Worker Thread Pool Sizes According to the Needs of the Application
N.5
Be Careful When Making InvocationService Calls
N.6
Be Careful When Placing Collection Classes in the Cache
N.7
Run Multiple Proxies Instead of Increasing Thread Pool Size
N.8
Configure POF Serializers for Cache Servers
N.9
Use Node Locking Instead of Thread Locking
O
Scaling Out Your Data Grid Aggregations Linearly
O.1
The Data
O.2
Configure a Partitioned Cache
O.3
Add an Index to the Price Property
O.4
Code to perform a Parallel Aggregation
O.5
The Testing Environment and Process
O.5.1
Performing a "Test Run"
O.5.2
This "Test Suite" (and Subsequent Results) Includes Data from Four "Test Runs":
O.5.3
JDK Version
O.6
The Results
O.7
Conclusion