Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    [RMI] server attivabile problematico

    Buondì! Sto realizzando un progetto per l'esame di Programmazione Avanzata e di Rete (pr gli amici PAR) e sto incontrando qualche problemino con un server attivabile :master:

    Vi mostro il pezzetto di codice che da problemi, poi ve lo spiego :master:

    codice:
    // client code
    SystemUser user = factoryServer.getAuthenticationAgent().login(username, password, localAddress);
    
    System.out.println("USER = " + user);
    
    if (user != null) {
      System.out.println("Now I try to get the mobile server");
      
      RemoteDatabase d = ActivatableFactory.init();
    
      System.out.println("REMOTE DATABASE = " + d);
    
      RemoteUser r = d.getMobileServer(user);
    
      System.out.println("REMOTE USER = " + r);
    }
    Il codice riguarda il lato client: all'utente vengono chiesti i dati di accesso e successivamente viene chiamato il metodo remoto login (che non fa altro che interrogare il database per verificare se i dati sono corretti o meno). Se l'autenticazione va a buon fine viene restituito un oggetto con le informazioni dell'utente, null altrimenti.

    L'autenticazione non da problemi, infatti user è diverso da null. Fatto questo devo chiedere ad un altro server remoto (un server Activatable di cui ottengo correttamente il riferimento con RemoteDatabase d = ActivatableFactory.init();) un "server mobile" (ovvero un server remoto non ancora esportato che viene serializzato e spedito in rete). Ed è qui che ho problemi: nonostate la chiamata remota a getMobileServer venga eseguita correttamente (lato server vedo correttamente le "stampe di debug"), sul client ottengo un'eccezione (le mie classi sono quelle nel package par (e sotto-package)):

    codice:
    java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
    	java.io.EOFException
    	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:173)
    	at sun.rmi.server.ActivatableRef.invoke(ActivatableRef.java:124)
    	at par.server.activatable.ActivatableDatabase_Stub.getMobileServer(Unknown Source)
    	at par.server.RMIClient.run(RMIClient.java:113)
    	at par.minimal.MinimalClient.main(MinimalClient.java:21)
    Caused by: java.io.EOFException
    	at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:323)
    	at java.io.ObjectInputStream$BlockDataInputStream.readUnsignedShort(ObjectInputStream.java:2764)
    	at java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:2820)
    	at java.io.ObjectInputStream.readUTF(ObjectInputStream.java:1051)
    	at java.rmi.server.RemoteObject.readObject(RemoteObject.java:407)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
    	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
    	at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:306)
    	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:155)
    	... 4 more
    Pensavo fosse un problema di serializzazione degli oggetti ma ho fatto implementare Serializable a TUTTO e non è cambiato nulla!

    Qualcuno ha qualche idea di cosa significhi? E' da due giorni che non ne vengo fuori!
    Grazie in anticipo =)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Proprio nessuno?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Originariamente inviato da Alex'87
    Proprio nessuno?
    Io ho difficoltà a gestire cose semplicissime con Java
    Di quello che hai chiesto tu non ho manco capito una virgola

    Qualcuno arriverà a rispondere, te lo auguro
    al volante son nervoso

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Rubox
    Io ho difficoltà a gestire cose semplicissime con Java
    Di quello che hai chiesto tu non ho manco capito una virgola
    lol
    Java RMI (Remote Method invocation) è quella parte della libreria Java che permette di realizzare applicazioni distribuite.

    Se ti interessa approfondire, clicca qui
    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
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Originariamente inviato da Alex'87
    lol
    Java RMI (Remote Method invocation) è quella parte della libreria Java che permette di realizzare applicazioni distribuite.

    Se ti interessa approfondire, clicca qui
    Beh si, quello che significa lo so.
    Ma è proprio quello che c'è dietro che per me è arabo.
    al volante son nervoso

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