Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Passaggio di un oggetto di tipo ResultSet tramite RMI da server a client

    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...
    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;
        }
        
      }
        
        
    }
    e questo è il server che andrà a creare un'istanza della classe:



    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;
            }
           
        
        
        }
    }
    l'errore che mi da è in getUsageTrack() dice che non è possibile sovrscrivere il metodo dell'interfaccia ...

    /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

  2. #2

    Re: Passaggio di un oggetto di tipo ResultSet tramite RMI da server a client

    Originariamente inviato da Savvatore
    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
    L'errore che ti dà significa che nella classe HLRserver hai implementato il metodo getUsageTrack() con la signature sbagliata; infatti nell'interfaccia restituisce un oggetto di tipo hlrinterface.Record, mentre nella classe restituisce un oggetto di tipo hlrserver.Record.
    Forse hai dimenticato di far implementare alla classe hlrserver.Record l'interfaccia hlrinterface.Record.

    Ciao,

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.