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:
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);
}
}
Questo genera un eccezione in corrispondenza di:
codice:
Connection conn = db.getConnection();
L'eccezione è di unmurshalling, non riesce a serializzare l'oggetto org.hsqldb.jdbcDriver.
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?