2009-06-02 1 views
6

Come posso modificare la porta RMI predefinita (1099). Potrebbe essere come parametro JVM o tramite codifica, non importa. Grazie.Cambiamento predefinito Porta RMI (Java)

+0

Registro di sistema o server? – dfa

+2

1099 è la porta del server del registro RMI, non la porta del server RMI. –

+0

[Qui] (http://coding.derkeiler.com/Archive/Java/comp.lang.java.programmer/2008-09/msg00874.html) è una soluzione tramite codifica. Sembra che devi creare un registro personalizzato sulla porta selezionata. ** Modifica ** - rileggi la tua domanda: questo non cambierà la ** porta ** predefinita ma aggiungerà un nuovo registro a quello esistente su Port 1099 –

risposta

10

È possibile specificarlo sulla riga di comando. Dal RMI Tutorial:

Per impostazione predefinita, il Registro di sistema viene eseguito sulla porta 1099. Per avviare il Registro di sistema su una porta diversa, specificare il numero di porta sulla riga di comando. Non dimenticare di disinserire la variabile d'ambiente CLASSPATH.

Microsoft Windows: 

start rmiregistry 2001 

Solaris OS or Linux: 

rmiregistry 2001 & 

Nel codice si utilizza la sostituzione LocateRegistry.getRegistry(String host, int port) per individuare il Registro di hostname e la porta, come spiegato nella sezione Creating a Client Program del tutorial. (Lo stesso vale per l'implementazione del server.)

+0

Ok, quindi quello che dici è che non c'è modo di cambiare la porta rmiRegistry ma puoi cambiare la porta rmiServer da 1098 a qualsiasi cosa usi un argomento di proprietà -D alla JVM? – djangofan

+0

@djangofan: non esattamente. Si modifica la porta rmiregistry sulla riga di comando (come mostrato sopra). –

+0

@djangofan sta dicendo esattamente il contrario. – EJP

3

È possibile specificare la propria porta quando si esporta l'oggetto remoto, tramite super (porta, ...) o exportObject (remoto, porta, ...) a seconda se fai o non estendi UnicastRemoteObject. Se estendi Activatable ci sono sovraccarichi altrettanto super() con un numero di porta. È possibile specificare la porta del Registro di sistema sulla riga di comando se la si utilizza, altrimenti tramite LocateRegistry.createRegistry() se si utilizza tale.