Within the framework of the Google summer of Code 2007, I have been working
on the development of an XQuery for Java (XQJ) driver for eXist databases
with the mentorship of Adam Retter. XQJ is a new specification request
proposed by Oracle in conjunction with IBM which aims to provide Java
applications with a common and standardized API to access XQuery data
sources. XQJ tries to offer the same application independant abstraction as
JDBC does for SQL databases. The implementation follows version 0.9 of the
The XQJ API standard is available as JSR (Java Specification Request) 225 at
the Java Community Process Website.
However, an eXist Database can be deployed either as an embedded library
that runs in the JVM of the client application or as a standalone server
possibly located on a remote host. A different XQJ driver is therefore
needed for each of these use cases.
We are half way through the implementation timeframe for the Google Summer
of Code, and this mail is meant to keep the eXist community updated about
the prgress of my work which started on May 28nd.
I first started working on the remote connection driver. To implement that
driver, in conjunction with eXist developers, we decided to leverage the
REST API offered by eXist. At this point almost all features recommended by
the specifications have been implemented for the remote connection driver.
The only features which are still missing are transactional queries support
and query cancellation support. Those are optional features and they are not
currently supported by eXist core engine. Also, for the implementation of
some of the XQJ features, the REST server had to be improved and extended.
Now the REST API offers a mechanism for external variables declarations and
returns XML formatted error messages when an error occurs.
At this point, the remote connection XQJ driver has been fully implementated
but is still being tested.
On the other hand, I've also started working on the local database driver
and I expect it to be fully implemented by August. At which point, I'll
write some documentation for both drivers.
For the development, I created an SVN branch named "allad" (my nickname).
The latest development version of the XQJ driver can be found in that