Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: Problema con Remote

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    21

    Problema con Remote

    Ciao a tutti,
    avrei un problema con un programma che sto costruendo con implementazione del modello RMI. Dunque, la mia situazione è questa
    ho tre classi
    CLASSE1: classe Client
    CLASSE2: classe server con Vector<CLASSE 3>
    CLASSE3: classe extends Thread

    Ora, per CLASSE1 E CLASSE2 non ho problemi. RMI funziona alla perfezione. Ho solo un problema con CLASSE3. Questa classe dovrebbe essere Remote (almeno a mio avviso) perché non voglio fare copie profonde di questa classe.

    Come fare per rendere CLASSE3 sottoclasse sia di Thread che di Remote?

  2. #2
    codice:
    MiaClasse extends Thread implements Remote
    Direi che potrebbe andare

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    21
    Non me lo da per buono!

    In teoria, da qualche guida ho visto che si dovrebbe fare così


    Interface CLASSE3INTERFACE extends Remote {..}

    e poi

    class CLASSE3 extends UnicastRemoteObject implements CLASSE3INTERFACE{...}

    Però CLASSE3 dovrebbe estendere anche Thread...che fare?

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da pcsitter
    class CLASSE3 extends UnicastRemoteObject implements CLASSE3INTERFACE{...}

    Però CLASSE3 dovrebbe estendere anche Thread...che fare?
    Java non permette l'ereditarietà multipla, mettitela via. Devi per forza estendere Thread? Se devi lavorare coi thread puoi far implementare Runnable..
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Originariamente inviato da pcsitter
    Non me lo da per buono!

    In teoria, da qualche guida ho visto che si dovrebbe fare così


    Interface CLASSE3INTERFACE extends Remote {..}

    e poi

    class CLASSE3 extends UnicastRemoteObject implements CLASSE3INTERFACE{...}

    Però CLASSE3 dovrebbe estendere anche Thread...che fare?
    Allora per prima cosa non avevi detto che la classe 3 deve estendere anche UnicastRemoteObject, e questo cambia tutto in quanto in java non puoi avere l'ereditarietà multipla. Cmq la soluzione e sempre semplice,basta implementare l'interfaccia Runnable :
    codice:
     class CLASSE3 extends UnicastRemoteObject implements Remote, Runnable
    Fatto ciò puoi creare un thread passando al costruttore la classe3
    Ciao.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    21
    Perfetto! Grazie mille!!!
    Solo un'ultima domanda: io come devo fare per crearmi una classe con una run dentro per poi poter fare su CLASSE2 variabile.start() (che fa partire il thread di CLASSE3)?

    Perché così mi compila tutto, però quando vado ad invocare a.start() mi da che non trova il metodo start(), probabilmente perché non ho esteso Thread. Aiuto, son fuso e non ci capisco più niente!

  7. #7
    Originariamente inviato da pcsitter
    Perfetto! Grazie mille!!!
    Solo un'ultima domanda: io come devo fare per crearmi una classe con una run dentro per poi poter fare su CLASSE2 variabile.start() (che fa partire il thread di CLASSE3)?

    Perché così mi compila tutto, però quando vado ad invocare a.start() mi da che non trova il metodo start(), probabilmente perché non ho esteso Thread. Aiuto, son fuso e non ci capisco più niente!
    .
    Il motivo è perchè non hai esteso direttamente Thread, ma ti basta creare un thread in questo modo :
    codice:
    Thread thread = new Thread(new Classe3());
    thread.start();
    etc...
    Un cosiglio da un occhio al JavaDoc ogni tanto, è sempre utile.
    Ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    21
    Grazie!
    Ecco, pensavo di aver risolto e invece niente! Dunque, mi manca solo questa cosa..
    io ho CLASSE1 che è client
    CLASSE2 che estende UnicastRemoteObject e implementa la sua interfaccia (con i metodi richiamabili in remoto)
    CLASSE3 che estende UnicastRemoteObject e implemnta la sua inferfaccia e Runnable.

    Ora quando CLASSE2 ritorna su un metodo un riferimento a CLASSE3 (e non è nullo perché dal server lo vedo l'oggetto che ritorna), questo non "viaggia" verso CLASSE1 e la variabile all'interno di CLASSE1 resta vuota perché all'invocazione del metodo di CLASSE3 che dovrebbe ritornare un oggetto di CLASSE3 non arriva niente sul client. Cavoli, sarò ignorante, ma questa proprio non mi arriva come farla...e sì che mi par di aver letto e studiato che si faccia così. francesco.muia, ti prego aiutami tu!

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    21
    Ah, il naming è fatto su CLASSE2 che ha un vector<CLASSE3> al suo interno e non posso usare naming anche per ogni istanza di CLASSE3

  10. #10
    posta il codice perchè non è facile capire cosa vuoi fare

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 © 2026 vBulletin Solutions, Inc. All rights reserved.