from command prompt I run: rmiregistry 1005
I then execute my rmi server from eclipse, and I get the following
exception:
java.rmi.server.ExportException: Port already in use: 1005; nested
exception is:
java.net.BindException: Address already in use: JVM_Bind
at sun.rmi.transport.tcp.TCPTransport.listen(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.exportObject(Unknown Source)
at sun.rmi.transport.tcp.TCPEndpoint.exportObject(Unknown Source)
at sun.rmi.transport.LiveRef.exportObject(Unknown Source)
at sun.rmi.server.UnicastServerRef.exportObject(Unknown Source)
at java.rmi.server.UnicastRemoteObject.exportObject(Unknown Source)
at java.rmi.server.UnicastRemoteObject.exportObject(Unknown Source)
at com.networkprogramming.rmi.Quote.<init>(Quote.java:35)
at com.networkprogramming.rmi.QuoteServer.main(QuoteServer.java:25)
Caused by: java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at
sun.rmi.transport.proxy.RMIDirectSocketFactory.createServerSocket(Unknown
Source)
at
sun.rmi.transport.proxy.RMIMasterSocketFactory.createServerSocket(Unknown
Source)
at sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(Unknown Source)
The line of code that the exception is originating from is:
UnicastRemoteObject.exportObject(this, portNumber);
where port number is also 1005.
Note that if I simply run rmiregistry followed by
UnicastRemoteObject.exportObject(this);
i.e. I don't specify a port, everything goes off without a hitch.
I've tried a few different configurations but nothing seems to get me
beyond this point... Any insite would be appreciated.
Thanks,
Andy
Use a single Registry on port 1099 and let the servers choose their own
port numbers
UNLESS
you have to deal with a firewall, in which case you should start the
Registry from within the server JVM using
LocateRegistry.createRegistry(). In this case as long as you don't get
in the way with socket factories the Registry *and* all the RMI servers
in the JVM will use port 1099.