After more investigation I found out that the problem is eventually in the XmlDb API.
Xindice wants to register three databases: "xindice, xindice-embed, xindice-corba". That's the value the getName method returns. The DatabaseManager takes this name as a key for the hashtable. Consequently one database object is registered with one single key. When I want to gain access to a collection I give "xindice-embed" as part of the URI. Since the DatabaseManager has not record with this key (only with "xindice, xindice-embed, xindice-corba") it returns null. :-( The solution: - define the format of the getName method in the case of multiple implementations (e.g. the names must be separated by a ',' or a space) - when registring a database, split the name according to the separator and store one instance per separator in the hashtable. - when deregistring a database, go through all the keys and remove the instance from the hashtable. here the code: public static void registerDatabase (Database database) throws XMLDBException { if ((database.getName() == null) || (database.getName().equals(""))) { throw new XMLDBException(ErrorCodes.INVALID_DATABASE); } StringTokenizer st = new StringTokenizer(database.getName(), ","); while (st.hasMoreTokens()) { String token = st.nextToken(); databases.put(token.trim(), database); } } public static void deregisterDatabase (Database database) throws XMLDBException { StringTokenizer st = new StringTokenizer(database.getName(), ","); while (st.hasMoreTokens()) { String token = st.nextToken(); databases.remove(token.trim()); } } Of course you can choose another separator than ',' and check is a database is already registered. -Vladimir -- Vladimir Bossicard www.bossicard.com ---------------------------------------------------------------------- Post a message: mailto:[EMAIL PROTECTED] Unsubscribe: mailto:[EMAIL PROTECTED] Contact administrator: mailto:[EMAIL PROTECTED] Read archived messages: http://archive.xmldb.org/ ----------------------------------------------------------------------