Salve a tutti, sto realizzando un applicazione che lavori su un'archietettura clients/server, utilizzando rmi. Il database è stato realizzato attraverso hsqldb, e risiede nel server. Dal client riesco ad accedere al database, infatti ho utilizzato la classe Database che ho trovato nelle Pillole, ne ho creato l'interfaccia è l'ho "remotizzata", nel senso che dal client posso chiamare i metodi di questa classe. Il mio problema nasce nel momento in cui voglio fare la stampa dal client. Io utilizzo i report e la classe per la stampa è la seguente:
Questo genera un eccezione in corrispondenza di:codice:public StampaCliente(String codCliente, IDatabase db) { try { //Carica il file jrxml e lo compila String fileJrxml = getClass().getResource("/report/ClientiReport.jrxml").getFile(); JasperReport jasperReport = JasperCompileManager.compileReport(fileJrxml); //Crea un Map di parametri da passare al report Map<String, String> parameters = new HashMap<String, String>(); parameters.put("codcliente", codCliente); parameters.put("SUBREPORT_DIR", getClass().getResource("/report/").getFile()); parameters.put("IMM_PATH", getClass().getResource("/report/logo.gif").getFile()); //Crea la connessione al DataBase Connection conn = db.getConnection(); //Crea il JasperPrint JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn); //Visualizza il report nella finestra di anteprima di JasperReport JasperViewer.viewReport(jasperPrint, false); } catch (ClassNotFoundException ex) { Logger.getLogger(StampaCliente.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(StampaCliente.class.getName()).log(Level.SEVERE, null, ex); } catch (JRException ex) { Logger.getLogger(StampaCliente.class.getName()).log(Level.SEVERE, null, ex); } }
L'eccezione è di unmurshalling, non riesce a serializzare l'oggetto org.hsqldb.jdbcDriver.codice:Connection conn = db.getConnection();
Ho provato a inserire implements Serializable nella classe Database, ma niente. Ho provato ad utilizzare transient nella Connessione ma niente. Qualcuno sa darmi una mano?

Rispondi quotando