Blogs Hot Rod URI

Hot Rod URI

Traditionally, the Java Hot Rod client has always been configured either via a properties file or through a programmatic builder API.

While both approaches offer a great amount of flexibility, they always felt a bit too complex for straightforward scenarios.

Starting with Infinispan 11 you will be able to specify the connection to an Infinispan Server via a URI, just like you’d connect to a database via a JDBC driver URL.

The Hot Rod URI allows you to specify the addresses of the server cluster, authentication parameters and any other property in a simple compact String format.

The URI specification is:

hotrod[s]://[username:password]@host[:port][,host[:port]…​][?property=value[&property=value…​]]

  • the protocol can be either hotrod (plain, unencrypted) or hotrods (TLS/SSL, encrypted)

  • if username and password are specified, they will be used to authenticate with the server

  • one or more addresses. If a port is not specified, the default 11222 will be used

  • zero or more properties, without the infinispan.client.hotrod prefix, through which you can configure all other aspects such as connection pooling, authentication mechanisms, near caching, etc.

Here are some examples:

hotrod://localhost

simple connection to a server running on localhost using the default port

hotrod://joe:secret@infinispan-host-1:11222,infinispan-host-2:11222

authenticated connection to infinispan-host-1 and infinispan-host-2 with explicit port

hotrods://infinispan-host-1?socket_timeout=1000&connect_timeout=2000

TLS/SSL connection to infinispan-host-1 using the default port and with custom connection and socket timeouts

The URI format can also be used as a starting point in your usual properties file or API configuration and further enriched using the traditional methods:

infinispan.client.hotrod.uri=hotrod://joe:secret@infinispan-host-1:11222,infinispan-host-2:11222
infinispan.client.hotrod.connect_timeout=100
infinispan.client.hotrod.socket_timeout=100
infinispan.client.hotrod.tcp_keep_alive=true
ConfigurationBuilder builder = new ConfigurationBuilder()
    .uri("hotrod://joe:secret@infinispan-host-1:11222,infinispan-host-2:11222")
    .socketTimeout(100)
    .connectionTimeout(100)
    tcpKeepAlive(true);

We hope this makes configuration simpler.

Happy coding!

Get it, Use it, Ask us!

We’re hard at work on new features, improvements and fixes, so watch this space for more announcements!

Please, download and test the latest release.

The source code is hosted on GitHub. If you need to report a bug or request a new feature, look for a similar one on our GitHub issues tracker. If you don’t find any, create a new issue.

If you have questions, are experiencing a bug or want advice on using Infinispan, you can use GitHub discussions. We will do our best to answer you as soon as we can.

The Infinispan community uses Zulip for real-time communications. Join us using either a web-browser or a dedicated application on the Infinispan chat.

Tristan Tarrant

Tristan has been leading the Infinispan Engineering Team at Red Hat for quite a while now, as well as being Principal Architect for Red Hat Data Grid. He's been a passionate open-source advocate and contributor for over three decades.