Coherence*Extend extends the reach of the core Coherence TCMP cluster to a wider range of consumers, including desktops, remote servers and machines located across WAN connections. It also provides a wider range of language support including .NET and C++ clients. Typical uses of Coherence*Extend include providing desktop applications with access to Coherence caches (including support for Near Cache and Continuous Query) and Coherence cluster "bridges" that link together multiple Coherence clusters connected through a high-latency, unreliable WAN.
Coherence*Extend consists of two basic components: a client running outside the cluster, and a proxy service running in the cluster. The client API includes implementations of both the
InvocationService interfaces which route all requests to a proxy running within the Coherence cluster. The proxy service in turn responds to client requests by delegating to an actual Coherence clustered service (for example, a Partitioned or Replicated cache service).
There are three Coherence*Extend clients available:
Java—described in this chapter.
.NET—see "Overview" in Coherence for .NET
C++—see "Overview" in Coherence for C++
Coherence*Extend clients provide the same rich API support as the standard Coherence API without being full data members of the cluster. There are two categories of clients:
Data client—The base client that allows for:
Key-based cache access through the
Attribute-based cache access using Filters
Custom processing and aggregation of cluster side entries using the
In process caching through
Remote invocation of custom tasks in the cluster through the Invocation Service
Real Time Client (described in Chapter 11, "Real Time Client—RTC")
The proxy service is responsible for dispatching requests from Extend clients to actual clustered services and returning the results of these requests to the appropriate client. It is hosted by one or more
DefaultCacheServer processes running within a cluster. Clients communicate with a proxy service using a low-level messaging protocol that has two transport bindings:
Extend-TCP—uses a high performance, scalable TCP/IP-based communication layer to connect to the cluster. This protocol is supported by all available clients.
Extend-JMS—uses your existing JMS infrastructure as the means to connect to the cluster. This protocol is only supported by the java client.