Much of the code for TSpaces has been revised for the TSpaces V3 release. Many of the suggestions from our users have been implemented and it has been made more robust and secure.
Many of the problems in the previous version of Tspaces were due to problems in both the design and implementation of Transactions and Locking. These have been redesigned and made more robust.
TSpaces' XML support has been augmented with support for XPath as the field matching language.
Also, multiple XMLFields per tuple are now supported.
Regular expressions can now be used for matching of java.lang.String fields.
We now support SSL for communication between the client and the
TCP Keep Alive is an optional parameter for both TSpaces clients and servers.
If enabled, keep-alive can improve detection of TCP disconnections.
The HTTP support has been rewritten and many new facilities have been added.
It is also now possible to restrict the usage of the HTTP Support.
The command processing in the Server now uses ThreadPools. This was a performance improvement.
The debug cabability has been improved. It is now also possible to write a log file that will contain important events such as client connect/disconnect and access to spaces.
When you allow user objects to be sent to the server, then certain methods of those objects will be invoked in the server Virtual Machine. This may be a security problem and/or a reliability problem. We have provided an alternative way of running the TSpaces server where it will run with its own class loader and you can specify what authorizations the client classes will have.
The processing of Tuple expiration has been changed so that a client can be
notified when a Tuple expires.
With this release, we have tried to add some consistency to the Tspaces command names. For example, we now have new command names multiRead, multiTake to go with the old multiWrite and the original scan and consumingScan have been deprecated. Likewise we have added new commands readAll, takeAll and countAll to go with the original deleteAll. The xxxxAll commands are consistent in that they are applied to both Tuples and SubclassableTuples.
The 3.1.0 server is not compatible with the current TSpaces 2.1.2 server. If you have an existing server, you will not be able to simply switch to using the new code base with the existing Spaces. We have a do have a Migrate procedure documented in the Install document.
It was our intent to provide compatibility with 2.1.2 clients being able to access a 3.1.0 server. In general they will work but because of some important changes that had to be made in the Server to Client exception handling they are not completely compatible. If a 2.1.2 client connects to a 3.1.0 server and recieves an exception, the client may not be able to correctly process the exception and/or be able to display the cause of the exception.
As mentioned above, compiling your client code with TSpaces 3.1.0 may cause some methods to be flagged as deprecated.
Also, because a Query object results in a Tuple that might return a SubclassableTuple
the original signature for commands that accept a Tuple argument was invalid.
The fix for this will cause some existing client code to be flagged.
For example: the code
Tuple query = new Tuple((new IndexQuery(...)); Tuple result = ts.take(query);is incorrect because the take command can return either a Tuple or a SubclassableTuple. The signature has been fixed and the client code will have to be changed to either:
Tuple result = (Tuple)ts.take(query); or SuperTuple result = ts.take(query);
The emphasis for Enterprise Tspaces (Version 3) was originally support for Replicated Spaces. However, the code for replication is still under development. But there are also many other new features and improvements in this release, so we are distributing this "Alpha" release of Tspaces Version 3 with Replication disabled so that interested users can try out some of the other new features. It will also give you a chance to give us some feedback on problems that you find in the release.