It looks like the names of the Ubuntu boxes are not resolvable to each other or to windows. There are a bunch of different reasons that can happen including:
(1) Naming service isn't setup to do this by accident or design. Obvious questions are around how the Ubuntu boxes are expected to resolve names versus the Windows boxes. Expect to hear about things like Active Directory and DNS. (2) The Ubuntu boxes are using default hostnames that aren't resolvable - again this can be by accident or design. On 22 September 2011 13:49, Иван Бишевац <[email protected]> wrote: > Hi, > I compiled hello world example that writes message into space and then reads > it and shows on console. > > Here is my Lookup class: > public package jsbook.chapter1.helloWorld; > > > import java.io.IOException; > > import java.rmi.RemoteException; > > import net.jini.core.lookup.ServiceRegistrar; > import net.jini.core.lookup.ServiceTemplate; > > import net.jini.discovery.LookupDiscovery; > import net.jini.discovery.DiscoveryListener; > import net.jini.discovery.DiscoveryEvent; > > /** > A class which supports a simple JINI multicast lookup. It doesn't register > with any ServiceRegistrars it simply interrogates each one that's > discovered for a ServiceItem associated with the passed interface class. > i.e. The service needs to already have registered because we won't notice > new arrivals. [ServiceRegistrar is the interface implemented by JINI > lookup services]. > > @todo Be more dynamic in our lookups - see above > > @author Dan Creswell ([email protected]) > @version 1.00, 7/9/2003 > */ > public class Lookup implements DiscoveryListener { > private ServiceTemplate theTemplate; > private LookupDiscovery theDiscoverer; > > private Object theProxy; > > /** > @param aServiceInterface the class of the type of service you are > looking for. Class is usually an interface class. > */ > public Lookup(Class aServiceInterface) { > Class[] myServiceTypes = new Class[] {aServiceInterface}; > theTemplate = new ServiceTemplate(null, myServiceTypes, null); > } > > /** > Having created a Lookup (which means it now knows what type of service > you require), invoke this method to attempt to locate a service > of that type. The result should be cast to the interface of the > service you originally specified to the constructor. > > @return proxy for the service type you requested - could be an rmi > stub or an intelligent proxy. > */ > Object getService() { > synchronized(this) { > if (theDiscoverer == null) { > > try { > theDiscoverer = > new LookupDiscovery(LookupDiscovery.ALL_GROUPS); > theDiscoverer.addDiscoveryListener(this); > } catch (IOException anIOE) { > System.err.println("Failed to init lookup"); > anIOE.printStackTrace(System.err); > } > } > } > > return waitForProxy(); > } > > /** > Location of a service causes the creation of some threads. Call this > method to shut those threads down either before exiting or after a > proxy has been returned from getService(). > */ > void terminate() { > synchronized(this) { > if (theDiscoverer != null) > theDiscoverer.terminate(); > } > } > > /** > Caller of getService ends up here, blocked until we find a proxy. > > @return the newly downloaded proxy > */ > private Object waitForProxy() { > synchronized(this) { > while (theProxy == null) { > > try { > wait(); > } catch (InterruptedException anIE) { > } > } > > return theProxy; > } > } > > /** > Invoked to inform a blocked client waiting in waitForProxy that > one is now available. > > @param aProxy the newly downloaded proxy > */ > private void signalGotProxy(Object aProxy) { > synchronized(this) { > if (theProxy == null) { > theProxy = aProxy; > notify(); > } > } > } > > /** > Everytime a new ServiceRegistrar is found, we will be called back on > this interface with a reference to it. We then ask it for a service > instance of the type specified in our constructor. > */ > public void discovered(DiscoveryEvent anEvent) { > synchronized(this) { > if (theProxy != null) > return; > } > > ServiceRegistrar[] myRegs = anEvent.getRegistrars(); > > for (int i = 0; i < myRegs.length; i++) { > ServiceRegistrar myReg = myRegs[i]; > > Object myProxy = null; > > try { > myProxy = myReg.lookup(theTemplate); > > if (myProxy != null) { > signalGotProxy(myProxy); > break; > } > } catch (RemoteException anRE) { > System.err.println("ServiceRegistrar barfed"); > anRE.printStackTrace(System.err); > } > } > } > > /** > When a ServiceRegistrar "disappears" due to network partition etc. > we will be advised via a call to this method - as we only care about > new ServiceRegistrars, we do nothing here. > */ > public void discarded(DiscoveryEvent anEvent) { > } > } > > > When I try to run example on Ubuntu and services (httpd.bat, > jrmp-reggie.bat, jrmp-outrigger-group.bat) are started on Windows XP then it > works. But when I try to run program on Windows and start services on Ubunt > then it shows error. > cica@cica-System-Name:~/Desktop$ java -jar JavaSpaceClient.jar > Searching for a JavaSpace... > Jul 27, 2011 11:20:54 PM > net.jini.discovery.LookupDiscovery$UnicastDiscoveryTask run > INFO: exception occurred during unicast discovery to > biske-Inspiron-1525:4160 with constraints InvocationConstraints[reqs: {}, > prefs: {}] > java.net.UnknownHostException: biske-Inspiron-1525 > at > java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:175) > at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384) > at java.net.Socket.connect(Socket.java:546) > at java.net.Socket.connect(Socket.java:495) > at > com.sun.jini.discovery.internal.MultiIPDiscovery.getSingleResponse(MultiIPDiscovery.java:134) > at > com.sun.jini.discovery.internal.MultiIPDiscovery.getResponse(MultiIPDiscovery.java:75) > at > net.jini.discovery.LookupDiscovery$UnicastDiscoveryTask.run(LookupDiscovery.java:1756) > at > net.jini.discovery.LookupDiscovery$DecodeAnnouncementTask.run(LookupDiscovery.java:1599) > at com.sun.jini.thread.TaskManager$TaskThread.run(TaskManager.java:331) > > > > Note: Combination of two Windows works fine. Combination of two Ubuntu does > not. > > Could you help me to resolve this error? Thanks. >
