Newsgroup: it.comp.java
Titolo: AIUTO CLASSE REMOTA

Ciao a tutti,
ho scritto una classe remota (RMI) la quale restituisce un oggetto File che
punta ad una determinata directory della macchina che ospita l'applicazione
server.
Questa classe dovrebbe servire per inizializzare un oggetto JFileChooser in
un'applicazione client.
public interface DirectoryRemota extends java.rmi.Remote {
    abstract public File getDirectory() throws java.rmi.RemoteException;
}
L'implementazione dell'interfaccia (del metodo getDirectory) fa restituire
un oggetto File puntanto ad una directory del server predefinita.
Nel client poi il mio JFileChooser viene inizializzato nel modo seguente:
new javax.swing.JFileChooser(dir){
        String dirIniziale= dir.getAbsolutePath();
        public void setCurrentDirectory(File dir) {
            if (dir.getAbsolutePath().equals(dirIniziale)) {
                super.setCurrentDirectory(dir);
            }
        }};
Dove dir è l'oggetto resitituito dal metodo getDirectory() dell'oggetto
remoto e myDir = dir.getAbsolutePath();
Allora il tutto funziona fino a che client e server girano sulla stessa
macchina. Ma se il client lo sposto su di un'altra macchina (macchina linux)
non funziona.
In particolare osservo che
dir.getAbsolutePath() restituisce   /root/c:/directoryPredefinita/
Ovverro mette un /root prima del percorso reale del server? Dunque anche
l'oggetto dir è "contaminato"?
Cos'è che sbaglio? Grazie a tutti.
Mr. Deckard

Il problema dovrebbe stare nel fatto che l'oggettp File, non estendendo
la classe UnicastRemoteObject, viene passato per copia. La macchina
chiamante si trova ad avere quindi un'oggetto File identico all'originale,
che si comporta come se risiedesse sulla macchina ospite e non su quella
chiamante.
Dovresti invece instanziare l'oggetto File all'interno di una sottoclasse di
UnicastRemoteObject, prevedendo un metodo che restituisca l'array
del contenuto di una certa cartella.
Mi sono espresso in modo abbastanza chiaro?

 ha scritto nel messaggio
news:mf0Za.58704$cl3.1...@news2.tin.it...

Ciao e grazie per la risposta,
però non sono sicuro di aver compreso al 100%. L'interfaccia remota che ho
riportato nel mio precedente messaggio viene poi implementata estendendo
UnicastRemoteObject e riporto il frammento di codice:
public class DirectoryRemotaImpl extends java.rmi.server.UnicastRemoteObject
implements DirectoryRemota {
    private File dir;
    public DirectoryRemotaImpl() throws java.rmi.RemoteException{
    }
    public java.io.File getDirectory() throws java.rmi.RemoteException{
        dir = new
File("C:/jakarta-tomcat-4.1.24/webapps/ROOT/miadirectory/");
        return dir;
    }
}
(Il server ricordo funziona su windows)
Beh mi sembra che sia quello che tu mia hai consigliato?
Perché parli di array di files?
Tieni presente che io voglio usare una JFileChooser. Quello che voglio
sapere è se almeno concettualmente sto lavorando nella maniera corretta.
Potresti nell'eventualità farmi un piccolo esempio?
Ancora graze infinitamente.
Mr. Deckard

Come ho scritto nel post precedente, secondo me il problema sta
nell'esportazione dell'oggetto dir... la mia idea era di restituire il
vettore con i nomi dei file (metodo list() di File). Solo che a questo
punto non si può creare il JFileChooser. Non so cosa suggerire,
almeno su questa strada... io avevo fatto una applicazione per un'esame,
in cui la selezione dei file sul computer remoto avviene attraverso un
JTree che visualizza l'albero del filesystem e una JTable per l'elenco
dei file all'interno della cartella selezionata. Il tutto è però molto più
impegnativo.
