Change Default RMI Port (Java)
Asked Answered
R

2

7

How can I change the default RMI port (1099). It could be as JVM parameter or via coding, it doesn´t matter. Thanks.

Refutative answered 2/6, 2009 at 11:54 Comment(3)
Here is a solution via coding. Looks like you have to create a custom Registry on your selected port. Edit - just re-read your question: this will not change the default port but add a new registry to the existing one at Port 1099Babbette
1099 is the RMI registry server port, not the RMI server port.Friable
@VincentRobert It can be both.Rechaba
M
11

You can specify it on the command line. From the RMI Tutorial:

By default, the registry runs on port 1099. To start the registry on a different port, specify the port number on the command line. Do not forget to unset your CLASSPATH environment variable.

Microsoft Windows:

start rmiregistry 2001

Solaris OS or Linux:

rmiregistry 2001 &

In your code you use the LocateRegistry.getRegistry(String host, int port) override to locate the registry by hostname and port, as explained in the Creating a Client Program section of the tutorial. (The same applies when implementing your server.)

Marvel answered 2/6, 2009 at 12:8 Comment(5)
Ok, so what your saying is that there is no way to change the rmiRegistry port but you can change the rmiServer port from 1098 to whatever using a -D property arg to the JVM?Dincolo
@djangofan: Not exactly. You change the rmiregistry port at the command line (as shown above).Marvel
@Dincolo he is saying exactly the opposite of that.Rechaba
ok, so in other words, there is no way to change the rmiRegistry port except by the method of starting "rmiregistry.exe" from the command line before starting the JVM?Dincolo
@Dincolo You are not reading attentively enough. He didn't say that either, and there is: you can start it in your JVM on any port you like via Locatearegistry.createaRgistry().Rechaba
R
3

You can specify your own port when exporting your remote object, either via super(port, ...) or exportObject(remote, port, ...) depending on whether you do or don't extend UnicastRemoteObject. If you extend Activatable there are similarly super() overloads with a port number. You can specify the Registry's port on the command line if you use that, otherwise via LocateRegistry.createRegistry() if you use that.

Rechaba answered 10/7, 2011 at 4:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.