2009-06-02 18 views
6

¿Cómo puedo cambiar el puerto RMI predeterminado (1099)? Puede ser como parámetro JVM o vía codificación, no importa. Gracias.Cambiar puerto RMI predeterminado (Java)

+0

registro o servidor? – dfa

+2

1099 es el puerto del servidor de registro RMI, no el puerto del servidor RMI. –

+0

[Aquí] (http://coding.derkeiler.com/Archive/Java/comp.lang.java.programmer/2008-09/msg00874.html) es una solución a través de la codificación. Parece que tienes que crear un registro personalizado en tu puerto seleccionado. ** Editar **: simplemente vuelve a leer tu pregunta: esto no cambiará el puerto ** predeterminado **, pero agrega un nuevo registro al existente en el puerto 1099 –

Respuesta

10

Puede especificarlo en la línea de comando. Desde el RMI Tutorial:

De manera predeterminada, el registro se ejecuta en el puerto 1099. Para iniciar el registro en un puerto diferente, especifique el número de puerto en la línea de comandos. No olvides desarmar tu variable de entorno CLASSPATH.

Microsoft Windows: 

start rmiregistry 2001 

Solaris OS or Linux: 

rmiregistry 2001 & 

En el código que utilizan la anulación LocateRegistry.getRegistry(String host, int port) para localizar el registro de nombre de host y el puerto, como se explica en la sección Creating a Client Program del tutorial. (Lo mismo aplica cuando se implementa su servidor.)

+0

Ok, entonces ¿qué dice que no hay forma de cambiar el puerto de rmiRegistry pero puede cambiar el puerto de rmiServer de 1098 a cualquiera que use una propiedad -D arg a la JVM? – djangofan

+0

@djangofan: No exactamente. Cambia el puerto de rmiregistry en la línea de comando (como se muestra arriba). –

+0

@djangofan él está diciendo exactamente lo opuesto a eso. – EJP

3

Puede especificar su propio puerto al exportar su objeto remoto, ya sea a través de super (puerto, ...) o exportObject (remoto, puerto, ...) dependiendo de si usted amplía o no extiende UnicastRemoteObject. Si amplía Activatable, también hay sobrecargas super() con un número de puerto. Puede especificar el puerto del Registro en la línea de comando si lo usa, de lo contrario, a través de LocateRegistry.createRegistry() si lo usa.