Date: Fri, 21 Nov 2003 12:38:31 +0100 From: Andreas Kohn <andreas.kohn@gmx.net> To: David Israelsson <david@israelsson.org> Cc: freebsd-java@freebsd.org Subject: Re: RMI on FreeBSD Message-ID: <20031121123831.16dc7c27.andreas.kohn@gmx.net> In-Reply-To: <87n0aq6k3p.fsf@poh.gnapp.org> References: <87fzgjbdnq.fsf@poh.gnapp.org> <20031120095224.GR11487@starjuice.net> <877k1vb7tt.fsf@poh.gnapp.org> <20031120121152.GT11487@starjuice.net> <87n0aq6k3p.fsf@poh.gnapp.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 21 Nov 2003 12:23:38 +0100 David Israelsson <david@israelsson.org> wrote: > Sheldon Hearn <sheldonh@starjuice.net> writes: > > > What do you expect to happen trying to connect to the local host before > > a listening service has bound to the appropriate port? I'd expect > > "Connection refused". > > > Of course, that was only to make sure that it connects to the right > service. No rmiregistry running -> connection refused, rmiregistry > running -> no exception thrown. Hence, the rmi server successfully > connects to the rmiregistry. > > > > My original reply simply answered the question "is RMI broken on > > FreeBSD", for which the answer is probably "no". I'm now guessing. :-) > > > Well, there's _something_ with FreeBSD that makes my RMI test case not > working. Here's a test program that demonstrates the problem: > > import java.rmi.*; > import java.rmi.server.UnicastRemoteObject; > > public class RMITest extends UnicastRemoteObject implements Remote > { > public RMITest() > throws RemoteException > { > super(); > } > > public static void main(String[] args) > throws Exception > { > long millis = System.currentTimeMillis(); > Naming.rebind("//localhost:2001/Test", new RMITest()); > System.out.println("Got here after " > + ((System.currentTimeMillis() - millis) / 1000) > + " seconds."); > } > } > > And here's what I do with it: > > poh:~/rmitest> javac RMITest.java > poh:~/rmitest> rmic RMITest > poh:~/rmitest> rmiregistry 2001& > [1] 42631 > poh:~/rmitest> java RMITest > Got here after 76 seconds. > poh:~/rmitest> > > It should take one or two, possibly three seconds, not 76. And the > program shouldn't exit afterwards. The same program works exactly > like it's supposed to when I boot Linux on the same computer. > > Yes, it seems like a network problem. What happens in the > Naming.rebind() method is that the rmi server reports its ip number > and the port it has allocated, then the rmiregistry tries to contact > the rmi server on that ip number and port. This is where it fails. > It works if I first turn off the external interface. In both cases > (FreeBSD and Linux) I get the same network settings from my isp's dhcp > server, and a traceroute to the remote ip number from my computer > indicates that the traffic does not go through any gateways. > > Is my system broken? If so, how could I fix it? Can anybody get that > tiny little test program working? Hi, I tried it using jdk 1.4.2p5 on FreeBSD 5.1-CURRENT (Nov 17). Works flawlessly: [mobile] ~/projects/java>javac RMITest.java [mobile] ~/projects/java>/usr/local/java/bin/rmic RMITest [mobile] ~/projects/java>java RMITest Got here after 0 seconds. <program continues to run> -- Andreas Kohn
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031121123831.16dc7c27.andreas.kohn>