Currently Jackrabbit initializes the repository storage (persistence
manager) when creating the repository object. If the repository data
is stored in relational database, then the database connection is
opened at that time.

I suggest to allow delayed initialization (allow, not require). For
some storage backends, the repository could initialize when opening
the first session.

Example:

1)
String url = "jdbc:...";
RepositoryFactory factory = (RepositoryFactory)
Class.forName(factoryClass).newInstance();
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("url", url);
Repository rep = factory.getRepository(parameters);

2)
String user = "...", password = "...";
Session session = rep.login(new SimpleCredentials(user,
password.toCharArray()));

This example uses a relational database as the storage. When creating
the repository object, user name and password are unknown, so the
repository could not initialize at that time. Only when the first user
logs in, the user name and password are known. In this case, the user
name and password of the session would match the user name and
password of the storage backend, but that's actually not a requirement
(it's just an example).

The current Jackrabbit architecture doesn't support this 'delayed
initialization' use case yet.

I suggest that Jackrabbit 3 should support such delayed
initialization. Whether or not we will implement storage backends that
actually do use this mechanism is another question.

Regards,
Thomas

Reply via email to