serviceRemoved / serviceAdded problem
Francisco Dário Mourão <[email protected]>
| Newsgroups | gmane.comp.java.sun.jini |
|---|---|
| Message-ID | <[email protected]> |
Hi all again,
I have an application running a number x of Jini services (according to configuration x can be over than 10 in a specific production environment).
For now all the services run in a single machine (RedHat9.0 jsdk5).
I'm using Jini 2.1.
I use the http server provided in classserver.jar. I also use reggie, norm, and fiddler services.
Some services act as client of other services.
Each service acting as a client, has a lookup cache to the services it uses more frequently:
...
discover = new LookupDiscoveryManager(groups, locators, null);
sdm = new ServiceDiscoveryManager(discover, new LeaseRenewalManager(), conf);
serviceTemplate = new ServiceTemplate (null,
new Class[] {IServiceX.class},
new Entry[] {entry});
lCache = sdm.createLookupCache(serviceTemplate, null, new ServiceListener());
...
In this case a service say ClientService uses a lookupCache for the service x (IServiceX).
The application runs with no problem for while. Sometimes it takes 5 or more days until the problem occurs...
THE PROBLEM:
At a given point in time, I don't know why, the client services receive through their implementation of ServiceListener(), the notifications of
serviceRemoved and then serviceAdded for all the services it is a client (all the services in the LookupCache).
The application recovers a few minutes later because there is a corresponding serviceAdded few moments after a serviceRemoved notification is sent,
but until it recovers the application doesn't respond which is expected according to what's happening.
Note: with Jini 2.0_2 I had the same problem, but sometimes some client services only received a serviceRemoved notification and no corresponding serviceAdded. That would crash my application.
Changing to Jini 2.1 corrected the problem of not receiving the corresponding serviceAdded... but the question remains:
QUESTION:
What causes this serviceRemoved / serviceAdded sequence?
Could be service lease expiration?
I'm trying get a cpu analyser to see if the cpu has some peeks. Could this be associated? I wonder if in a peek of cpu it can't renew services (???)
But I'm a little bit confused because net.jini.lookup.ServiceDiscoveryManager.registerListener() does this:
leaseRenewalMgr.renewFor(eventLease,
duration, //equals to LONG.MAX_VALUE
new LeaseListenerImpl(proxy));
and according to api doc this is the same as
renewFor(eventLease, duration, Lease.FOREVER, new LeaseListenerImpl(proxy));
so this means that the lease will last LONG.MAX_VALUE and will never need to be renewed (because renewal duration = Lease.FOREVER) right?
So it can't be a renewal problem...
What else could it be?
Thanx in advance for any help
Best regards
Francisco Mourão
--------------------------------------------------------------------------
Getting Started: http://www.jini.org/wiki/Category:Getting_Started
Community Web Site: http://jini.org
jini-users Archive: http://archives.java.sun.com/archives/jini-users.html
Unsubscribing: email "signoff JINI-USERS" to [email protected]