Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    29

    problema di sicurezza?

    Salve ragazzi, sono nuovo e spero che mi possiate aiutare
    Ho realizzato un applicazione compattata in dei .jar che risiedono su un server e che vengono caricati mediante java web start e apposito file.jnlp

    la classe incriminata si occupa di stampare dei file .jasper, quindi già compilati, che si trovano nello stesso jar; se l'applicazione la faccio girare tramite netbeans funziona tutto perfettamente e riesco a stampare, ma se la faccio girare tramite jnlp, quindi caricando i vari jar dal server, si verificano degli errori.
    Vi riporto le righe essenziali della classe incriminata e gli errori
    public class myReport{
    .........
    public void crea(){
    InputStream is = getClass().getResourceAsStream("/reports/compilati/repfile.jasper");
    Map parameters = new HashMap();


    try {
    JasperPrint jasperPrint = JasperFillManager.fillReport(is,parameters,connect ion); // QUESTA SEMBRA LA RIGA INCRIMINATA
    JasperPrintManager.printReport(jasperPrint,true);
    } catch (JRException ex) {
    ex.printStackTrace();
    }
    }
    ........
    }


    net.sf.jasperreports.engine.JRException: Error loading expression class : repfile_1184173756562_188220
    at net.sf.jasperreports.engine.design.JRAbstractJavaC ompiler.loadEvaluator(JRAbstractJavaCompiler.java: 87)
    at net.sf.jasperreports.engine.design.JRAbstractCompi ler.loadEvaluator(JRAbstractCompiler.java:320)
    at net.sf.jasperreports.engine.design.JRDefaultCompil er.loadEvaluator(JRDefaultCompiler.java:218)
    at net.sf.jasperreports.engine.fill.JRFillDataset.cre ateCalculator(JRFillDataset.java:410)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.<ini t>(JRBaseFiller.java:384)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller. <init>(JRVerticalFiller.java:77)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller. <init>(JRVerticalFiller.java:59)
    at net.sf.jasperreports.engine.fill.JRFiller.createFi ller(JRFiller.java:147)
    at net.sf.jasperreports.engine.fill.JRFiller.fillRepo rt(JRFiller.java:57)
    at net.sf.jasperreports.engine.JasperFillManager.fill Report(JasperFillManager.java:402)
    at net.sf.jasperreports.engine.JasperFillManager.fill Report(JasperFillManager.java:363)
    at GUIobjects.MyReport.crea(MyReport.java:56)
    at ja33.Main.main(Main.java:31)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.sun.javaws.Launcher.executeApplication(Unknown Source)
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
    at com.sun.javaws.Launcher.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)
    at java.security.AccessControlContext.checkPermission (Unknown Source)
    at java.security.AccessController.checkPermission(Unk nown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkCreateClassLoader(U nknown Source)
    at java.lang.ClassLoader.<init>(Unknown Source)
    at net.sf.jasperreports.engine.util.JRClassLoader.<in it>(JRClassLoader.java:56)
    at net.sf.jasperreports.engine.util.JRClassLoader.loa dClassFromBytes(JRClassLoader.java:196)
    at net.sf.jasperreports.engine.design.JRAbstractJavaC ompiler.loadEvaluator(JRAbstractJavaCompiler.java: 76)
    ... 21 more

    quando alla prima riga dice:
    Error loading expression class : repfile_1184173756562_188220

    repfile_1184173756562_188220 è un file che crea iReport, con il quale ho disegnato il report e compilato, ma che non è presente nella mia applicazione, ho preso solo il .jasper.

    che mi dite

    grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Dico che visto che jnlp suppone l'uso di un file (applicazione) remoto e che tale codice che mandi bellamente in esecuzione potrebbe contenere anche un bel format c: o un deltree o equivalente codice nocivo, dovrai dotare l'applicazione di un certificato digitale (firma digitale). Ciò fatto, invece dell'errore ti comparirà una finestra in cui ti si chiede se considerare il software attendibile e quindi eseguirlo. In nessun caso potrai eseguirlo senza firmarlo e accettarne il certificato, se vuoi utilizzare jnlp
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    29
    si questo lo so
    dal file di jnlp posso settare mediante tag <security> due livelli di sicurezza , la cosa che chiedevo era un altra, non capisco per quale motivo entra in gioco quel file repfile_1184173756562_188220 che come dicevo è un file .java che crea ireport quando compili.
    Io prendendo il file .jasper dovrei prendere tutto e non avere bisogno di null'altro.
    Strano! comunque faccio alcune prove coi livelli di sicurezza.
    Se ti viene qualcosa in mente...
    grazie
    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    E' proprio quello: se l'applicazione deve scrivere un file o accedere a proprietà del client, ha bisogno di un certificato.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    29
    Quel file che chiede è un file di caricamento dei campi del report avevo pensato di includerlo
    nel jar ma non so poi cosa farmene,
    la cosa strana è che tutti i tutorial che ho letto parlano solo di file jrxml e file jasper
    e dicono che se la compilazione viene fatta da ireport per esempio ottengo un jasper che posso utilizzare
    JasperPrint jasperPrint = JasperFillManager.fillReport(InputStream_del_file_ Jasper,parameters,connection);
    JasperPrintManager.printReport(jasperPrint,true);

    altrimenti devo prima compilare

    JasperReport jasperreport = JasperCompileManager.compileReport(InputStream_fil e_JRXML);
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperreport,paramete rs,connection);
    JasperPrintManager.printReport(jasperPrint,true);

    in questo caso mi da un 'altro errore.

    Vorrei capire a cosa gli serve quel dannato file, visto che sui tutorial non ne parlano

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.