Hi guys,
I'm now pushing the modifications to the backend. Entries will be stored
as ServerEntry serialized data, instead of serialiazed Attributes. This
will have some impacts :
- The MasterTable won't be compatible with the previous version (1.X and
1.5.1)
- We will have to modify the way data are serialized, using some other
instance of Serializer classes (this is an Interface declared in the
JDBM package, which is used internally by JDBM)
- As JDBM serialize the Serializer into the files on disk, and as our
new serializer needs some reference on Registries, this is a dead end :
the restored Serializer won't contain any reference to the registries
The last point is blocking. I don't know why JDBM has to store a
reference to the serializer, but the BTree class use it :
BTree
...
public void readExternal( ObjectInput in )
throws IOException, ClassNotFoundException
{
...
_valueSerializer = (Serializer) in.readObject();
Here, we need to inject the registries, otherwise the serializer won't
be initialized correctly, leading to NPE all over the server. The BPage
class use this _valueSerializer to serialize and deserialize data
(BPage implements the Serializer interface) :
...
if ( serialized != null ) {
bpage._values[ i ] =
_btree._valueSerializer.deserialize( serialized );
...
So I suggest we define a new project with JDBM sources, and fork from
the existing base to have our own. That will allow us to bypass this
limitation.
Any other solution in mind ?
--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org