FW: Discovery issues

Francisco Albasini Mourão <[email protected]> Tue, 24 Jun 2008 19:36:14 +0100
Newsgroups gmane.comp.java.sun.jini
Message-ID <[email protected]>
Hi everyone,

I have a simple sample running two jini services: call it ServiceClient and ServiceHost; service ServiceClient acts as a client of service ServiceHost. This sample uses Jini2_0 version.

 

ServiceClient uses the following piece of code:

...

discover = new LookupDiscoveryManager(groups, locators, new LookupListener());

sdm = new ServiceDiscoveryManager(discover, new LeaseRenewalManager(config), config);

lCache = sdm.createLookupCache(new ServiceTemplate (null, new Class[] {IServiceHost.class}, null),null, new ServiceManager());

...

 

LookupListener implements DiscoveryListener and ServiceManager implements ServiceDiscoveryListener.

The config object is related to a configuration file that holds no particular configuration for these objects.

The ServiceClient service runs on machine-Client and ServiceHost on machine-Host. Each machine has its own reggie and httpd.

 

 

1) For Multicast Discovery, parameters for the LookupDiscoveryManager constructor above in code are as follow:

groups="MyGroup","MySecondGroup"  (there is only one machine with reggie as member of these - the machine-Host)

locators= null

 

 

2) For Unicast Discovery, parameters for the LookupDiscoveryManager constructor above in code are as follow:

groups= net.jini.discovery.DiscoveryGroupManagement.NO_GROUPS

locators= new LookupLocator[] { new LookupLocator("jinni://<ip­_ServiceHost>")}

 

 

Everything is ok when I run the services. ServiceClient discovers ServiceHost and some methods are successfully invoked. My issue is when I stop application in machine-Host killing ServiceHost and respective reggie.

 

1)In the case of Multicast Discovery, I only receive a lookup discard event in ServiceClient approximately 5m:30s after killing machine-Host application.

Maybe there is a parameter for setting this. I just can't find it.

 

This is a piece of the log when I finally receive the discard notification on ServiceClient:

 

23/Jun/2008 15:12:23 net.jini.lease.LeaseRenewalManager renewAll

FINE: Renewing lease com.sun.jini.reggie.ConstrainableServiceLease@e4b6741d

23/Jun/2008 15:12:23 net.jini.lease.LeaseRenewalManager renewAll

FINE: Renewing lease com.sun.jini.reggie.ConstrainableServiceLease@a595dfab

23/Jun/2008 15:12:23 net.jini.lease.LeaseRenewalManager renewAll

FINE: Renewing lease com.sun.jini.reggie.ConstrainableServiceLease@e5d63883

23/Jun/2008 15:12:23 net.jini.discovery.LookupDiscovery$UnicastDiscoveryTask run

FINEST: LookupDiscovery - UnicastDiscoveryTask started

23/Jun/2008 15:12:24 net.jini.lease.LeaseRenewalManager renewAll

FINE: Renewing lease com.sun.jini.reggie.ConstrainableServiceLease@ed58f920

23/Jun/2008 15:12:24 net.jini.discovery.LookupDiscovery$Notifier run

FINEST: LookupDiscovery - Notifier thread started

23/Jun/2008 15:12:24 net.jini.discovery.LookupDiscovery$1 run

FINEST: discarded event  -- 1 lookup(s)

23/Jun/2008 15:12:25 net.jini.discovery.LookupDiscovery$1 run

FINEST:     discarded locator  = null

23/Jun/2008 15:12:25 net.jini.discovery.LookupDiscovery$1 run

FINEST:     discarded group[0] = ps00041

23/Jun/2008 15:12:25 net.jini.discovery.LookupDiscovery$1 run

FINEST:     discarded group[1] = fmourao

23/Jun/2008 15:12:25 net.jini.lease.LeaseRenewalManager remove

FINE: Removed lease com.sun.jini.reggie.ConstrainableEventLease@8b155855

23/Jun/2008 15:12:26 net.jini.lookup.ServiceDiscoveryManager cancelLease

FINER: exception occurred while cancelling an event registration lease

java.rmi.ConnectException: connection refused or timed out to BasicObjectEndpoint[e0b792ce-429c-42d2-a7e6-61c3175934d8,TcpEndpoint[10.10.9.41:35230]]; nested exception is: 

      java.net.ConnectException: Connection refused: connect

      at net.jini.jeri.BasicInvocationHandler.wrapSafeIOException(BasicInvocationHandler.java:857)

      at net.jini.jeri.BasicInvocationHandler.invokeRemoteMethodOnce(BasicInvocationHandler.java:678)

      at net.jini.jeri.BasicInvocationHandler.invokeRemoteMethod(BasicInvocationHandler.java:626)

      at net.jini.jeri.BasicInvocationHandler.invoke(BasicInvocationHandler.java:495)

      at com.sun.jini.reggie.$Proxy13.cancelEventLease(Unknown Source)

      at com.sun.jini.reggie.EventLease.cancel(EventLease.java:77)

      at net.jini.lease.LeaseRenewalManager.cancel(LeaseRenewalManager.java:1050)

      at net.jini.lookup.ServiceDiscoveryManager.cancelLease(ServiceDiscoveryManager.java:3448)

      at net.jini.lookup.ServiceDiscoveryManager.access$1000(ServiceDiscoveryManager.java:611)

      at net.jini.lookup.ServiceDiscoveryManager$LookupCacheImpl.removeProxyReg(ServiceDiscoveryManager.java:1655)

      at net.jini.lookup.ServiceDiscoveryManager.dropProxy(ServiceDiscoveryManager.java:2363)

      at net.jini.lookup.ServiceDiscoveryManager.access$4200(ServiceDiscoveryManager.java:611)

      at net.jini.lookup.ServiceDiscoveryManager$DiscMgrListener.discarded(ServiceDiscoveryManager.java:2335)

      at net.jini.discovery.LookupDiscoveryManager.notifyListener(LookupDiscoveryManager.java:1388)

      at net.jini.discovery.LookupDiscoveryManager.notifyListener(LookupDiscoveryManager.java:1369)

      at net.jini.discovery.LookupDiscoveryManager.access$500(LookupDiscoveryManager.java:105)

      at net.jini.discovery.LookupDiscoveryManager$GroupDiscoveryListener.discarded(LookupDiscoveryManager.java:804)

      at net.jini.discovery.LookupDiscovery$1.run(LookupDiscovery.java:877)

      at com.sun.jini.start.AggregatePolicyProvider$5.run(AggregatePolicyProvider.java:513)

      at java.security.AccessController.doPrivileged(Native Method)

      at net.jini.discovery.LookupDiscovery$Notifier.run(LookupDiscovery.java:820)

Caused by: java.net.ConnectException: Connection refused: connect

      at java.net.PlainSocketImpl.socketConnect(Native Method)

      at java.net.PlainSocketImpl.doConnect(Unknown Source)

      at java.net.PlainSocketImpl.connectToAddress(Unknown Source)

      at java.net.PlainSocketImpl.connect(Unknown Source)

      at java.net.SocksSocketImpl.connect(Unknown Source)

      at java.net.Socket.connect(Unknown Source)

      at net.jini.jeri.tcp.TcpEndpoint$ConnectionEndpointImpl.connect(TcpEndpoint.java:513)

      at net.jini.jeri.connection.ConnectionManager.connect(ConnectionManager.java:228)

      at net.jini.jeri.connection.ConnectionManager$ReqIterator.next(ConnectionManager.java:629)

      at net.jini.jeri.BasicObjectEndpoint$1.next(BasicObjectEndpoint.java:371)

      at net.jini.jeri.BasicInvocationHandler.invokeRemoteMethodOnce(BasicInvocationHandler.java:675)

      ... 19 more

23/Jun/2008 15:12:26 net.jini.lookup.ServiceDiscoveryManager$LookupCacheImpl$ProxyRegDropTask run

FINEST: ServiceDiscoveryManager - ProxyRegDropTask started

23/Jun/2008 15:12:26 net.jini.lookup.ServiceDiscoveryManager$LookupCacheImpl$ProxyRegDropTask run

FINEST: ServiceDiscoveryManager - ProxyRegDropTask completed

23/Jun/2008 15:12:26 net.jini.lookup.ServiceDiscoveryManager$LookupCacheImpl$UnmapProxyTask run

FINEST: ServiceDiscoveryManager - UnmapProxyTask started

23/Jun/2008 15:12:26 net.jini.lookup.ServiceDiscoveryManager$LookupCacheImpl$UnmapProxyTask run

FINEST: ServiceDiscoveryManager - UnmapProxyTask completed

 

 

2) In the case of Unicast Discovery I only receive a lookup discard event in ServiceClient approximately 9m:30s after killing machine-Host application. Why is this different from the Unicast case. How can I change this setting?

 

Approximately 5m after killing machine-Host application, ServiceClient log starts registering this every minute:

 

FINE: Renewing lease com.sun.jini.reggie.ConstrainableServiceLease@b648e8a5

24/Jun/2008 18:23:36 net.jini.lease.LeaseRenewalManager renewAll

FINE: Renewing lease com.sun.jini.reggie.ConstrainableEventLease@2f424901

24/Jun/2008 18:23:37 net.jini.lease.LeaseRenewalManager renewAll

HANDLED: Indefinite exception while renewing lease com.sun.jini.reggie.ConstrainableEventLease@2f424901

java.rmi.ConnectException: connection refused or timed out to BasicObjectEndpoint[5fdf0550-a03f-4849-be75-52c3f4beed65,TcpEndpoint[10.10.9.41:35391]]; nested exception is: 

      java.net.ConnectException: Connection refused: connect

      at net.jini.jeri.BasicInvocationHandler.wrapSafeIOException(BasicInvocationHandler.java:857)

      at net.jini.jeri.BasicInvocationHandler.invokeRemoteMethodOnce(BasicInvocationHandler.java:678)

      at net.jini.jeri.BasicInvocationHandler.invokeRemoteMethod(BasicInvocationHandler.java:626)

      at net.jini.jeri.BasicInvocationHandler.invoke(BasicInvocationHandler.java:495)

      at com.sun.jini.reggie.$Proxy13.renewEventLease(Unknown Source)

      at com.sun.jini.reggie.EventLease.doRenew(EventLease.java:96)

      at com.sun.jini.lease.AbstractLease.renew(AbstractLease.java:79)

      at net.jini.lease.LeaseRenewalManager.renewAll(LeaseRenewalManager.java:1289)

      at net.jini.lease.LeaseRenewalManager.access$400(LeaseRenewalManager.java:225)

      at net.jini.lease.LeaseRenewalManager$RenewTask.run(LeaseRenewalManager.java:352)

      at com.sun.jini.thread.TaskManager$TaskThread.run(TaskManager.java:322)

Caused by: java.net.ConnectException: Connection refused: connect

      at java.net.PlainSocketImpl.socketConnect(Native Method)

      at java.net.PlainSocketImpl.doConnect(Unknown Source)

      at java.net.PlainSocketImpl.connectToAddress(Unknown Source)

      at java.net.PlainSocketImpl.connect(Unknown Source)

      at java.net.SocksSocketImpl.connect(Unknown Source)

      at java.net.Socket.connect(Unknown Source)

      at net.jini.jeri.tcp.TcpEndpoint$ConnectionEndpointImpl.connect(TcpEndpoint.java:513)

      at net.jini.jeri.connection.ConnectionManager.connect(ConnectionManager.java:228)

      at net.jini.jeri.connection.ConnectionManager$ReqIterator.next(ConnectionManager.java:629)

      at net.jini.jeri.BasicObjectEndpoint$1.next(BasicObjectEndpoint.java:371)

      at net.jini.jeri.BasicInvocationHandler.invokeRemoteMethodOnce(BasicInvocationHandler.java:675)

      ... 9 more

24/Jun/2008 18:23:39 net.jini.lease.LeaseRenewalManager renewAll

FINE: Renewing lease com.sun.jini.reggie.ConstrainableServiceLease@bba89067

24/Jun/2008 18:23:39 net.jini.lease.LeaseRenewalManager renewAll

FINE:

 

 

Although no discard notification is received whatsoever. This is a piece of the log when I finally receive the discard notification for the Unicast Discovery case:

 

24/Jun/2008 18:24:43 net.jini.discovery.LookupLocatorDiscovery$DiscoveryTask tryOnce

FINEST: LookupLocatorDiscovery - DiscoveryTask started

24/Jun/2008 18:24:43 net.jini.discovery.LookupLocatorDiscovery$Notifier run

FINEST: LookupLocatorDiscovery - Notifier thread started

24/Jun/2008 18:24:43 net.jini.discovery.LookupLocatorDiscovery$Notifier run

FINEST: discarded event  -- 1 lookup(s)

24/Jun/2008 18:24:44 net.jini.discovery.LookupLocatorDiscovery$LocatorReg doUnicastDiscovery

INFO: exception during unicast discovery

java.net.ConnectException: Connection refused: connect

      at java.net.PlainSocketImpl.socketConnect(Native Method)

      at java.net.PlainSocketImpl.doConnect(Unknown Source)

      at java.net.PlainSocketImpl.connectToAddress(Unknown Source)

      at java.net.PlainSocketImpl.connect(Unknown Source)

      at java.net.SocksSocketImpl.connect(Unknown Source)

      at java.net.Socket.connect(Unknown Source)

      at java.net.Socket.connect(Unknown Source)

      at java.net.Socket.<init>(Unknown Source)

      at java.net.Socket.<init>(Unknown Source)

      at net.jini.discovery.LookupLocatorDiscovery$LocatorReg.doUnicastDiscovery(LookupLocatorDiscovery.java:467)

      at net.jini.discovery.LookupLocatorDiscovery$LocatorReg.tryGetProxy(LookupLocatorDiscovery.java:430)

      at net.jini.discovery.LookupLocatorDiscovery.regTryGetProxy(LookupLocatorDiscovery.java:1208)

      at net.jini.discovery.LookupLocatorDiscovery.access$800(LookupLocatorDiscovery.java:281)

      at net.jini.discovery.LookupLocatorDiscovery$DiscoveryTask.tryOnce(LookupLocatorDiscovery.java:647)

      at com.sun.jini.thread.RetryTask.run(RetryTask.java:143)

      at com.sun.jini.thread.TaskManager$TaskThread.run(TaskManager.java:322)

24/Jun/2008 18:24:44 net.jini.discovery.LookupLocatorDiscovery$Notifier run

FINEST:     discarded locator  = null

24/Jun/2008 18:24:44 net.jini.discovery.LookupLocatorDiscovery$DiscoveryTask tryOnce

FINEST: LookupLocatorDiscovery - DiscoveryTask failed, will retry later

24/Jun/2008 18:24:44 net.jini.discovery.LookupLocatorDiscovery$Notifier run

FINEST:     discarded group[0] = ps00041

24/Jun/2008 18:24:44 net.jini.discovery.LookupLocatorDiscovery$Notifier run

FINEST:     discarded group[1] = fmourao

24/Jun/2008 18:24:44 net.jini.lookup.ServiceDiscoveryManager cancelLease

FINER: exception occurred while cancelling an event registration lease

net.jini.core.lease.UnknownLeaseException

      at net.jini.lease.LeaseRenewalManager.findEntry(LeaseRenewalManager.java:1206)

      at net.jini.lease.LeaseRenewalManager.remove(LeaseRenewalManager.java:1063)

      at net.jini.lease.LeaseRenewalManager.cancel(LeaseRenewalManager.java:1049)

      at net.jini.lookup.ServiceDiscoveryManager.cancelLease(ServiceDiscoveryManager.java:3448)

      at net.jini.lookup.ServiceDiscoveryManager.access$1000(ServiceDiscoveryManager.java:611)

      at net.jini.lookup.ServiceDiscoveryManager$LookupCacheImpl.removeProxyReg(ServiceDiscoveryManager.java:1655)

      at net.jini.lookup.ServiceDiscoveryManager.dropProxy(ServiceDiscoveryManager.java:2363)

      at net.jini.lookup.ServiceDiscoveryManager.access$4200(ServiceDiscoveryManager.java:611)

      at net.jini.lookup.ServiceDiscoveryManager$DiscMgrListener.discarded(ServiceDiscoveryManager.java:2335)

      at net.jini.discovery.LookupDiscoveryManager.notifyListener(LookupDiscoveryManager.java:1388)

      at net.jini.discovery.LookupDiscoveryManager.notifyListener(LookupDiscoveryManager.java:1369)

      at net.jini.discovery.LookupDiscoveryManager.access$500(LookupDiscoveryManager.java:105)

      at net.jini.discovery.LookupDiscoveryManager$LocatorDiscoveryListener.discarded(LookupDiscoveryManager.java:556)

      at net.jini.discovery.LookupLocatorDiscovery$Notifier.run(LookupLocatorDiscovery.java:582)

24/Jun/2008 18:24:44 net.jini.lookup.ServiceDiscoveryManager$LookupCacheImpl$ProxyRegDropTask run

FINEST: ServiceDiscoveryManager - ProxyRegDropTask started

24/Jun/2008 18:24:44 net.jini.lookup.ServiceDiscoveryManager$LookupCacheImpl$ProxyRegDropTask run

FINEST: ServiceDiscoveryManager - ProxyRegDropTask completed

 

 

 

 

I'd like to receive the notification of discarded reggie as soon as possible in the ServiceClient service. Am I doing something wrong? Is there anything I can configure?

 

Any help would be appreciated.

Thanx in advance.

 


--------------------------------------------------------------------------
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]