jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Edgar Poce <edgarp...@gmail.com>
Subject Re: Jackrabbit RMI Server - Websphere as Client
Date Thu, 18 Aug 2005 15:38:04 GMT
Hi florian

Florian Ried wrote:
> But when I shut down the Jackrabbit-RMI Server and start it again, my 
> servlets or portlets are not able to connect to the resource again and I 
> get an RMI Error.

from ClientRepositoryFactory javadocs
The repository references are cached so that only one client instance
(per factory) exists for each remote repository.

If you shutdown the rmi server the repository references in the client 
will become stale, and if you use jndi you won't be able to fix it in 
your client code.

> Anybody can tell me what is the source of the Problem? Is it the 
> ClientRepositoryFactory, does WAS cache the connection?

The source of the problem ;)
ClientRepositoryFactory.getRepository(String url)

Repository repository = (Repository) repositories.get(url);
if (repository == null) {
   RemoteRepository remote = (RemoteRepository) Naming.lookup(url);
   repository = factory.getRepository(remote);
   repositories.put(url, repository);
return repository;

> Another Question: Is there a disadvantage when accessing the Repository 
> directly from within the servlet (instead of using a JNDI Resource):
> ClientRepositoryFactory factory = new ClientRepositoryFactory();
> Repository r = factory.getRepository("rmi://srv-entw/repository");
> Session session = r.login(new SimpleCredentials("userid", 
> "".toCharArray()), null);

With this code, see quote and code above, you'll get a new reference 
each time, so your client shouldn't be affected by the rmi server restart.

But I like to use jndi, so IMHO the ClientRepositoryFactory should 
validate the reference to the remote repository and discard the cached 
references when they become stale, just like a jdbc pool discards stale 
connections. thoughts?


> Thank you for your answers.
> -Florian

View raw message