Salve a tutti.
Allora devo implementare una piccola applicazione RMI che mi consenta di richiamare da un client un metodo remoto che esegua una query su un database mysql e ritorni un 'oggetto di tipo ResultSet.
Il mio problema sta nel fatto che devo far si che la classe che estende l'iterfaccia ResultSet deve estendere anche la Serializable....
ho provato in questo modo...
e questo è il server che andrà a creare un'istanza della classe:codice:public class Record implements Serializable{ ResultSet res; /** Creates a new instance of Record */ public Record(Statement stat,String query) { super(); try{ res=stat.executeQuery(query);/*stat è l'oggetto statement che passo come parametro a questo costruttore*/ }catch(Exception e){ e.printStackTrace(); System.out.println("failed to execute sql query"); } } public int getAccountUR(){ int result=0; try{ while(res.next()) result=res.getInt("AccountUR"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public int getGlJobID(){ int result=0; try{ while(res.next()) result=res.getInt("GlJobID"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public int getGlGridCEId(){ int result=0; try{ while(res.next()) result=res.getInt("GlJobID"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public String HLRreceiver(){ String result=""; try{ while(res.next()) result=res.getString("HLRreceiver"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return null; } } public int HLRsender(){ int result=0; try{ while(res.next()) result=res.getInt("HLRsender"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public int JobCost(){ int result=0; try{ while(res.next()) result=res.getInt("JobCost"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public int priceval(){ int result=0; try{ while(res.next()) result=res.getInt("priceval"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public Timestamp gettransact(){ Timestamp result=new Timestamp(0); try{ while(res.next()) result=res.getTimestamp("trasact"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return null; } } public Timestamp getcpuwck_time(){ Timestamp result=new Timestamp(0); try{ while(res.next()) result=res.getTimestamp("cpuwck_time"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return null; } } public int PhMem(){ int result=0; try{ while(res.next()); res.getInt("PhMem"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public int getVirmem(){ int result=0; try{ while(res.next()) result=res.getInt("VirMem"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public Timestamp getCreationTime(){ Timestamp result=new Timestamp(0); try{ while(res.next()) result=res.getTimestamp("creationTime"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return null; } } public int getJobnameLRMS(){ int result=0; try{ while(res.next()) res.getInt("JobnameLRMS"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public int getLocalUID(){ int result=0; try{ while(res.next()) result=res.getInt("localUID"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public int getLocalGID(){ int result=0; try{ while(res.next()) result=res.getInt("localGID"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public int getVOFQAM(){ int result=0; try{ while(res.next()) res.getInt("VOFQAM"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public Timestamp getStartTime(){ Timestamp result=new Timestamp(0); try{ while(res.next()) result=res.getTimestamp("startTime"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return null; } } public Timestamp getEndTime(){ Timestamp result=new Timestamp(0); try{ while(res.next()) result=res.getTimestamp("endTime"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return null; } } public Timestamp getCreateTime(){ Timestamp result=new Timestamp(0); try{ while(res.next()) result=res.getTimestamp("createTime"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return null; } } public int getLastIns(){ int result=0; try{ while(res.next()); result=res.getInt("lastIns"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public int getInsq(){ int result=0; try{ while(res.next()) result=res.getInt("creationTime"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public int getSpecInt2000bch(){ int result=0; try{ while(res.next()) result=res.getInt("SpecInt2000bch"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public float getSpecFloat2000bch(){ float result=0; try{ while(res.next()) result=res.getFloat("SpecFloat2000bch"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } public Timestamp getTimezone(){ Timestamp result=new Timestamp(0); try{ while(res.next()) result=res.getTimestamp("timezone"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return null; } } public int getVOID(){ int result=0; try{ while(res.next()) result=res.getInt("VOID"); return result; }catch(Exception e){ System.err.println("SQLerror"); e.printStackTrace(); return 0; } } }
l'errore che mi da è in getUsageTrack() dice che non è possibile sovrscrivere il metodo dell'interfaccia ...codice:/* * HLRserver.java * * Created on 30 gennaio 2007, 12.21 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package hlrserver; import java.rmi.server.UnicastRemoteObject; import java.sql.*; import java.rmi.Remote; import java.rmi.RemoteException; import hlrinterface.*; /** * * @author zoth */ public class HLRserver extends UnicastRemoteObject implements HLRserverInterface{ private Connection myConnection; public Record myrecord; /** Creates a new instance of HLRclient */ public HLRserver() throws RemoteException{ super(); } /*inizialize Db connection */ public void init() throws RemoteException{ try{ Class.forName("com.mysql.jdbc.Driver"); myConnection=DriverManager.getConnection("jdbc:mysql://localhost:3306/gLite Accounting System Archive?user=root&password=&host=localhost"); } catch(Exception e){ System.out.println("Failed to get connection"); e.printStackTrace(); } } public Record getUsageTrack() throws RemoteException{ try{ Statement stat=myConnection.createStatement(); Record res=new Record(stat,"SELECT * FROM HLR WHERE AccountUR= && GlJobID=22"); System.out.println(res); return res; } catch(Exception e){ System.out.println("Statement Error"); e.printStackTrace(); return null; } } }
/home/zoth/Classi/CreditBank/src/hlrserver/HLRserver.java:25: hlrserver.HLRserver is not abstract and does not override abstract method getUsageTrack() in hlrinterface.HLRserverInterface
public class HLRserver extends UnicastRemoteObject implements HLRserverInterface{
/home/zoth/Classi/CreditBank/src/hlrserver/HLRserver.java:49: getUsageTrack() in hlrserver.HLRserver cannot implement getUsageTrack() in hlrinterface.HLRserverInterface; attempting to use incompatible return type
found : hlrserver.Record
required: hlrinterface.Record
public Record getUsageTrack() throws RemoteException{
2 errors
BUILD FAILED (total time: 0 seconds)
credo che l'errore stia nella definizione della classe
Record ... attendo qualche consiglio
ciao

Rispondi quotando