I pushed out version 0.7 of Rox a little while ago. The changelog is included below for those looking to kill some time.
Release 0.7
=====================
- NoSuchMethodException and NoSuchMethodError are reported by server
instances using a 404 (Not Found) HTTP response code.
- Shutting a server down did not correctly close established connections.
- Remote closure of a connection that was pooled on the client side
resulted in a deadlock because the wrong client was notified of the closure.
- Timeout exceptions were closing the connection the timeout occurred on
without notifying the connection pool, resulting in a logical resource
leak.
- Timeout exceptions are now raised within the context of the caller
rather than the timer thread.
- A common base class has been introduced for both timeout exceptions so
uniform handling can easily be applied to both cases.
- A default request timeout can now be configured on a ClientResourcePool.
Any client instances sharing this pool will have their request timeout
initialized based on this value.
- When using a resource pool connection pooling is keyed on the protocol,
host and port rather than on individual client instances. This allows
client instances that shared a remote destination to share connections.
- All instances of SimpleDateFormat are now retrieved from thread local
storage. This ensures that these instances are never accessed by
multiple threads simultaneously while avoiding creating unnecessary
instances.
- The synchronous client API will now raise a more specific IOException
(RPCCallFailedException) if a non-timeout related error occurs invoking
an XML-RPC method.
- The resource pool mentioned previously is now responsible for connection
pooling. This makes it possible restrict the number of open connections
across a set of client instances.
- It's now possible to associated an explicit pool of worker threads with
a collection of client or server instances. This makes it possible to
reuse I/O, worker and timer threads across a selected set of instances,
which assists when trying to scale to large numbers of client or server
instances by keeping the thread count under control.
- Introduced a LogFactory class. The model for logging has changed in this
release. Log instances are no longer associated with a particular client
or server instance. Rather, they're "looked up" in much the same fashion
as with Log4J. This is a slightly less flexible approach to logging since
it effectively forces a single global logging strategy, but I don't feel
this limitation is too serious (for now), and this simplifies logging and
removes one coupling point between worker threads and client/server
instances in anticipation of some upcoming changes.
Posted at 01:33 PM

