The 5800 system Java client library provides a platform-independent mechanism to upload data
and metadata to a 5800 system, and to retrieve and query the data and metadata. The Java client
library works with any implementation of J2SE
TM
platform 4.0 or later with HTTP connectivity
to the 5800 system cluster. Access is designed to be high-level and easy to use. Most operations
are accomplished in a single (synchronous) function call.
Interfaces
The Java client API interacts with the 5800 system server entirely through an HTTP protocol.
The HTTP communication layer uses the Apache Commons HTTP client.
Object data is streamed through the Java client library opaquely and a well-dened data hash is
returned for verication purposes. Metadata is added or retrieved with typed accessors. The
stored representation of metadata on the 5800 system server is not exposed to the user, and no
hash is returned when metadata is stored.
The 5800 system Java client library provides the NameValueObjectArchive class as an
application access layer, which should be appropriate for most applications. In addition, an
advanced interface provides a mechanism to customize the 5800 system and to serve as a toolkit
to build new applications.
Note – The advanced toolkit is not described in this document. If you are interested in pursuing
advanced applications, contact your 5800 system Sales Representative.
Retrying Operations
Calls to the Java API should be wrapped with retry logic so that their applications are resilient to
transient failures that may be experienced when a node or switch fails while servicing an
operation.
Requests that fail on recoverable HTTP errors are automatically retried once. A typical
recoverable error occurs when the 5800 system HTTP server times out a connection that the
client then tries to reuse (the client maintains a collection pool). This results in a connection
failure at request time. Because this is a recoverable error, it is retried and the retry typically
succeeds.
Performance and Scalability
Starting the Java Virtual Machine (JVM) incurs a performance penalty, but once the JVM is
running, you can use the client object archive repeatedly and from multiple threads. I/O is
synchronous (blocking). HTTP connections are pooled for performance. You should
instantiate one instance of the NameValueObjectArchive per 5800 system server and use it for
all access to that server until exit.
Overview ofthe5800 SystemJavaClient API
SunStorageTek 5800SystemClientAPIReferenceManual • June 200826