Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119

    [JAVA] RMI e passaggio di parametri

    Ciao, mi sembra di aver capito che il passaggio di parametri a metodi remoti (Messi a disposizione da un server RMI) possa avvenire per riferimento (Come solito nella semantica di Java) o per valore. Qua il mio dubbio:
    nel secondo caso ogni modifica da parte dei metodi del server sull'oggetto non dovrebbe avere ripercussioni sull'oggetto originale (Residente nella macchina del client).
    Nel secondo caso, invece, la modifica da parte del server (Remoto) sull'oggetto ricevuto come parametro sarebbe percepita anche da parte del client (Che ha invocato il metodo) ?

    Per far si che il passaggio avvenga per riferimento l'oggetto che viene passato deve implementare sia l'interfaccia Serializable che l'interfaccia Remote !?!

    thks

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    19
    Prendi questa mia affermazione molto con le pinze, ma mi pare che il passaggio parametri con un metodo RMI avvenga sempre e solo per riferimento.L'oggetto che passi deve implementare solo Serializable.
    Spero ti sia di aiuto...
    Ciao!

  3. #3
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da alanPi
    Prendi questa mia affermazione molto con le pinze, ma mi pare che il passaggio parametri con un metodo RMI avvenga sempre e solo per riferimento.L'oggetto che passi deve implementare solo Serializable.
    Spero ti sia di aiuto...
    Ciao!
    Purtroppo non e' cosi':
    "Vengono usati tre meccanismi differenti per passare argomenti a e ritornare risultati da metodi remoti, in funzione del tipo di dati.
    i tipi primitivi (int, boolean, double, etc.) vengono passati per valore, proprio come nell'invocazione di metodi locali Java. I riferimenti ad oggetti remoti (Ovvero gli oggetti che implementano l'interfaccia remote) vengono passati come un riferimento remoto, che permette al ricevente di invocare metodi sull'oggetto remoto in modo simile a quello in cui i riferimenti agli oggetti locali vengono passati ai metodi locali Java. Gli oggetti che non implementano l'interfaccia Remote vengono passati per valore, vale a dire che ne vengono passate copie complete, usando la SERIALIZZAZIONE degli oggetti; gli oggetti che non permettono di essere essi stessi serializzati, non possono essere passati ai metodi remoti"

    Fonte: "Java Network Programming" Elliotte Rusty Harold

    Siccome gli oggetti cui faccio riferimento (Opss... ) sono quelli che devono essere passati come parametro ai metodi paramenti (Es: int getYourName(Profile yourProfile); mi riferisco all'oggetto di tipo Profile) poiche' non dovrebbero implementare (Credo) l'interfaccia remote (Dato che non devono essere pubblicati su nessun registro RMI) saranno passati soltanto per valore (E' doverso, comunque, che implementino l'interfaccia Serializable).
    Insomma... quello che volevo sapere e':
    e' possibile fare in modo che l'oggetto yourProfile passato al metodo remoto, qualora venga da essomodificato , esso risulti modificato (Senza essere restituito mediante la return) anche nella JVM del client che ha invocato il metodo stesso ?

    thks !

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    68
    Ciao, ok che sono passati 7 anni ma qualcuno saprebbe rispondere alla domanda precedente? Interessa anche a me grazie!

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,295

    Moderazione

    Non risollevare discussioni vecchie di anni: se hai un problema specifico, apri una discussione dedicata (e nell'area corretta).

    Vedi il Regolamento per queste e altre norme da seguire.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.