-
Language:
English
-
Language:
English
7.2. Performing Remote Queries via the Hot Rod Java Client
Remote querying over Hot Rod can be enabled once the
RemoteCacheManager
has been configured with the Protobuf marshaller.
The following procedure describes how to enable remote querying over its caches.
Prerequisites
RemoteCacheManager
must be configured to use the Protobuf Marshaller.
Procedure 7.1. Enabling Remote Querying via Hot Rod
Add All Relevant Dependencies
See theinfinispan-client-hotrod
dependencies in theruntime-classpath.txt
file in the JBoss Data Grid Library distribution for a full list of required dependencies.Enable indexing on the cache configuration.
Indexing is not mandartory for Remote Queries, but it is highly recommended because it makes searches on caches that contain large amounts of data significantly faster. Indexing can be configured at any time. Enabling and configuring indexing is the same as for Library mode.Register the Protobuf Binary Descriptor
Register the Protobuf binary descriptor by invoking theregisterProtofile
method of the server'sProtobufMetadataManager
MBean. There is one instance of this per cache container configuration element of the server.
Result
All data placed in the cache is immediately searchable, whether or not indexing is in use. Entries do not need to be annotated, unlike embedded queries. The entity classes are only meaningful to the Java client and do not exist on the server.
Once remote querying has been enabled, the
QueryFactory
can be obtained using the following:
Example 7.1. Obtaining the QueryFactory
import org.infinispan.client.hotrod.Search; import org.infinispan.query.dsl.QueryFactory; import org.infinispan.query.dsl.Query; ... remoteCache.put(2, new User("John", "Doe", 33)); QueryFactory qf = Search.getQueryFactory(remoteCache); Query query = qf.from(User.class) .having("name").eq("John") .toBuilder().build(); List list = query.list(); assertEquals(1, list.size()); assertEquals("John", list.get(0).getName()); assertEquals("Doe", list.get(0).getSurname());
Queries can now be run over Hot Rod similar to Library mode.