Newsgroup: it.comp.java
Titolo: RMI, primi passi

Salve a tutti stavo cercando di capire come funziona il remote method 
invocation e stavo provando a scrivere un piccolo programma che setta una 
stringa su un server per vedere solo come iniziare.
A quanto ho capito prima si dovrebbero definire le interfacce che il server 
fornisce al client includendo tutti i metodi che possono essere invocati dal 
client.
Quello che mi sfugge sono gli oggetti serializable. A quanto ho capito 
dovrei fare estendere la classe Serializable agli oggetti che verranno 
scambiati ho capito bene?
In ogni caso io ho provato a scrivere prima questa semplice interfaccia:
package interfacce;
import java.rmi.Remote;
public interface Scambio extends Remote {
 public void setVisible(String p);
}
Poi ho iniziato a scrivere l'implementazione di questa interfaccia:
package server;
import interfacce.Scambio;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.*;
public class ScambioImpl extends UnicastRemoteObject implements Scambio {
 public ScambioImpl() throws RemoteException{ //qua ho un errore
  super();
 }
 public static void main(String[] args) {
 }
}
Ho solo iniziato a scrivere manca tutto però mi da già un errore ed un 
warning.
L'errore mi dice questo:
Severity Description Resource In Folder Location Creation Time
2 The type ScambioImpl must implement the inherited abstract method 
Scambio.setVisible(String) ScambioImpl.java Training/server line 19 9 marzo 
2005 13.07.53
ed il warning mi dice questo:
Severity Description Resource In Folder Location Creation Time
1 The serializable class ScambioImpl does not declare a static final 
serialVersionUID field of type long ScambioImpl.java Training/server line 19 
9 marzo 2005 13.07.53
Sia il warning che l'errore si riferiscono alla stessa riga.
Qualcuno mi potrebbe spiegare a cosa è dovuto l'errore e cosa vorrebbe 
indicarmi il warning?
Gli oggetti che trattano i metodi presenti nell'interfaccia devono estendere 
per forza la classe serializable?
Visto che il metodo usa una semplice stringa dovrei riscrivere la classe 
String?
Grazie a tutti.

 String?
No, guarda qui 
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html
Per tutta la documentazione guarda qui
http://java.sun.com/j2se/1.4.2/docs/api/index.html
Ciao

 ha scritto nel messaggio 
news:pjCXd.3223$Tm5....@twister2.libero.it...

Grazie per le risposte. L'errore poi ero riuscito a risolverlo ma in ogni 
caso mi continua a dare il warning.
Grazie a ancora, ciao ciao. 

 ha scritto nel messaggio 
news:pjCXd.3223$Tm5....@twister2.libero.it...

Ho un altro problema stavolta è con la compilazione e il lancio 
dell'applicazione.
Io ho scritto l'applicazione con eclipse che mi compila tutto in automatico, 
ma a quanto pare devo compilare il file del server usando rmic, invece 
eclipse usa il normale javac.
Ora avevo provato a lanciare il programma compilato con javac normale ma 
ovviamente mi da degli errori dicendo che mancano gli stub o qualcosa del 
genere, quindi dovrei compilare con rmic giusto?
Come si fa a dire ad eclipse (o a netbeans) di fare ciò? Ho cercato sulla 
guida di eclipse ma non ho trovato nulla.
In ogni caso ho provato a compilarlo a mano, prima ho compilato le 
interfacce che estende il server:
H:\src>javac interfacce\Scambio.java
vengono compilate senza problemi.
Poi provo a compilare il server:
H:\src>rmic server.ServerImpl.java
error: Class server.ServerImpl.java not found.
1 error
e mi viene dato questo errore.
Non so come provare a vedere se il server parte e si mette in ricezione.
Come posso compilarlo?
Se un giorno riuscirò a compilarlo come dovrei farlo partire?
A quanto ho letto dovrei prima lanciare rmiregistry
e poi lanciare normalmente il programma con java ScambioImpl
Ho capito bene?
Grazie a tutti.

 Grazie a tutti.
In teoria si, in pratica c'e' la possibilita' di non attivare il programma
rmiregistry e creare tutto al volo da codice, pero' prima ti conviene far
partire il programma, poi puoi passare al livello superiore. Cmq se segui il
tutorial che ti ho inviato, non avrai sicuramente problemi, se non per tua
distrazione ;P
Ciao

> 1 error
Qua ho copiato solo il messaggio che mi viene dato se provo a compilare il 
file java. Se provoa compilare il file class il messaggio non cambia, 
l'unica cosa che cambia č il nome del file che viene visualizzato senza 
.java.
Se provo ad entrare nella cartella server e provo a compilare tutto da 
dentro la cartella il messaggio č identico.
Qualcuno mi puņ postare i comandi precisi che ha gią utilizzato lui?
Oppure qualcuno mi potrebbe dire come fare compilare a netbeans od ad 
eclipse tramite rmic? Io sto leggendo le guide ma non riesco a trovare 
nulla.
Grazie a tutti. 


Non devi compilare con rmic il file .java ma quello .class, e quando lo
compili non devi mettere l'estensione. Prova a mettere l'interfaccia nello
stesso package con il server, poi compili tutto con
"javac -eventuali_parametri *.java", poi entri dentro la directory dove
stanno i sorgenti e fai "rmic ServerImpl", mi raccomando non mettere
l'estensione .class
Al massimo mi invii i sorgenti che faccio delle prove e poi ti informo in
base a come le hai configurate tu.
Ciao