thank you for the info but everything I found there tells me that the problem is related to some reference in the RMI server that is not unbind or unexported properly.

I tried the following code in the RepositoryStartupServlet to see if there were some remote object that weren't unbind or unexported but I couldn't find any, I inserted this line after the last line of code in the method unregisterRMI():

        try {
                String[] names = registry.list();

                log.info("names list lenght: " + names.length);

                for(int i = 0; i < names.length; i++){

                    try{
                        log.info("trying to unbind: " + names[i]);
                        registry.unbind(names[i]);

log.info("trying to unexport remote obj with name: " + names[i]);

Remote remoteobj = (Remote) registry.lookup(names[i]); UnicastRemoteObject.unexportObject(remoteobj, true);

                    } catch(Exception ex) {
                        log.error("Exception " + ex);
                    }
                }
            } catch (RemoteException re) {
                log.error("Remote Exception getting list: " + re);
            }


but the list is empty!

so at this moment I don't know whatelse to try...

is there any other place in the code where are some objects being bind?


thanks one more time!


cheers,

bruno coelho




On Sep 22, 2009, at 4:58 PM, Sébastien Launay wrote:

Le 22/09/2009 17:29, Bruno Coelho a écrit :
"RMI Reaper" prio=5 tid=0x0102cfe0 nid=0x8d2400 in Object.wait()
[0xb1011000..0xb1011d90]
   at java.lang.Object.wait(Native Method)
   - waiting on <0x29adfdd8> (a java.lang.ref.ReferenceQueue$Lock)
   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:120)
   - locked <0x29adfdd8> (a java.lang.ref.ReferenceQueue$Lock)
   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:136)
   at sun.rmi.transport.ObjectTable$Reaper.run(ObjectTable.java:336)
   at java.lang.Thread.run(Thread.java:613)

This is the only user thread as it does not contains the "daemon" token.
I don't know well how RMI and Jackrabbit works but the RMI connection
appears to not be closed leading to this thread still alive.

After googling, i find more information here:
http://www.nabble.com/Correct-way-of-avoiding-a-shutdown-delay-caused-by-the-Reaper-thread-td5661918.html

--
Sébastien Launay

Reply via email to