服务器中的 JasperReports 异常不支持嵌套事务在本地主机中工作正常

Nested transactions not supported JasperReports exception in server works fine in localhost

我必须继续使用 JSF 开发 Web 应用程序。它使用 Jasper Reports 生成 PDF 文件。它在本地主机上运行良好,没有警告,没有错误,一切正常。但是,当我上传到 VPS 时,它不起作用,这很奇怪,因为代码是相同的。我的电脑是 Ubuntu 15.04,Glassfish 4.1 和 Oracle Java 8。服务器有一个 Ubuntu 14.04 服务器,Glassfish 4.1 和 Oracle Java 7。 根据服务器glassfish的日志文件,是数据库有问题,但不知道是什么原因。本地主机和服务器使用相同版本的 MySQL 并且数据库的定义是相同的。实际上,我可以登录服务器,所以我可以访问数据库。

服务器中是否有必须不同的配置? 有人知道我应该找什么吗?

这些是错误:

错误 1 ​​

net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Error creating scriptlet class instance : com.appglass.jasper.CorteScriptlet javax.el.ELException: net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Error creating scriptlet class instance : com.appglass.jasper.CorteScriptlet at com.sun.el.parser.AstValue.invoke(AstValue.java:293) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304) at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40) at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50) at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:149) at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:813) at javax.faces.component.UICommand.broadcast(UICommand.java:300) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:70) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282) at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) at org.glassfish.grizzly.filterchain.ExecutorResolver.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access0(WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545) at java.lang.Thread.run(Thread.java:745) Caused by: net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Error creating scriptlet class instance : com.appglass.jasper.CorteScriptlet at net.sf.jasperreports.engine.fill.JRFillSubreport.prepare(JRFillSubreport.java:762) at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:328) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:377) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:351) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2039) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:771) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:281) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:144) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822) at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:61) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:407) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:824) at com.appglass.jasper.Reportes.crearPDF(Reportes.java:321) at com.appglass.backing.ProyectoAgregadoBacking.crearPDF(ProyectoAgregadoBacking.java:99) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.sun.el.parser.AstValue.invoke(AstValue.java:289) ... 46 more Caused by: net.sf.jasperreports.engine.JRException: Error creating scriptlet class instance : com.appglass.jasper.CorteScriptlet at net.sf.jasperreports.engine.scriptlets.DefaultScriptletFactory.getScriptlet(DefaultScriptletFactory.java:118) at net.sf.jasperreports.engine.scriptlets.DefaultScriptletFactory.getScriplets(DefaultScriptletFactory.java:69) at net.sf.jasperreports.engine.fill.JRFillDataset.createScriptlets(JRFillDataset.java:502) at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:619) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1252) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:877) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822) at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:652) at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59) at org.apache.commons.javaflow.bytecode.StackRecorder.execute(StackRecorder.java:95) at org.apache.commons.javaflow.Continuation.continueWith(Continuation.java:170) at org.apache.commons.javaflow.Continuation.startWith(Continuation.java:129) at org.apache.commons.javaflow.Continuation.startWith(Continuation.java:102) at net.sf.jasperreports.engine.fill.JRContinuationSubreportRunner.start(JRContinuationSubreportRunner.java:53) at net.sf.jasperreports.engine.fill.JRFillSubreport.prepare(JRFillSubreport.java:737) ... 66 more Caused by: org.hibernate.TransactionException: nested transactions not supported at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:154) at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1431) at sun.reflect.GeneratedMethodAccessor475.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356) at com.sun.proxy.$Proxy208.beginTransaction(Unknown Source) at com.appglass.data.dao.ConstantesDAO.cargarConstantes(ConstantesDAO.java:32) at com.appglass.jasper.CorteScriptlet.(CorteScriptlet.java:17) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:383) at net.sf.jasperreports.engine.scriptlets.DefaultScriptletFactory.getScriptlet(DefaultScriptletFactory.java:110) ... 80 more

错误 2

StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception org.hibernate.TransactionException: nested transactions not supported at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:154) at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1431) at sun.reflect.GeneratedMethodAccessor475.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356) at com.sun.proxy.$Proxy208.beginTransaction(Unknown Source) at com.appglass.data.dao.ConstantesDAO.cargarConstantes(ConstantesDAO.java:32) at com.appglass.jasper.CorteScriptlet.(CorteScriptlet.java:17) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:383) at net.sf.jasperreports.engine.scriptlets.DefaultScriptletFactory.getScriptlet(DefaultScriptletFactory.java:110) at net.sf.jasperreports.engine.scriptlets.DefaultScriptletFactory.getScriplets(DefaultScriptletFactory.java:69) at net.sf.jasperreports.engine.fill.JRFillDataset.createScriptlets(JRFillDataset.java:502) at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:619) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1252) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:877) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822) at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:652) at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59) at org.apache.commons.javaflow.bytecode.StackRecorder.execute(StackRecorder.java:95) at org.apache.commons.javaflow.Continuation.continueWith(Continuation.java:170) at org.apache.commons.javaflow.Continuation.startWith(Continuation.java:129) at org.apache.commons.javaflow.Continuation.startWith(Continuation.java:102) at net.sf.jasperreports.engine.fill.JRContinuationSubreportRunner.start(JRContinuationSubreportRunner.java:53) at net.sf.jasperreports.engine.fill.JRFillSubreport.prepare(JRFillSubreport.java:737) at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:328) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:377) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:351) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2039) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:771) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:281) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:144) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822) at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:61) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:407) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:824) at com.appglass.jasper.Reportes.crearPDF(Reportes.java:321) at com.appglass.backing.ProyectoAgregadoBacking.crearPDF(ProyectoAgregadoBacking.java:99) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.sun.el.parser.AstValue.invoke(AstValue.java:289) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304) at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40) at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50) at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:149) at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) more things

ProyectoAgregadoBacking

@ManagedBean
@ViewScoped
public class ProyectoAgregadoBacking implements Serializable{
    public void crearPDF()
    {
        renderNotificationBar = false;
        Reportes reporte = new Reportes();
        Locale loc = null;
        disabledVerPDF = true;

        if(idIdioma == null){
            try{
                reporte.crearPDF(idProyecto, getCurrentUser(), getCurrentUser().getEmail(), false, null);
            } catch(SQLException sqlE){
                sqlE.printStackTrace();
            }
        } else {
            if(idIdioma == 0){
                loc = new Locale("es", "ES");
            } else if(idIdioma == 1){
                loc = new Locale("en", "US");
            } else if(idIdioma == 2){
                loc = new Locale("it", "IT");
            } else if(idIdioma == 3){
                loc = new Locale("fr", "FR");
            } else if(idIdioma == 4){
                loc = new Locale("pt", "PT");
            } else if(idIdioma == 5){
                loc = new Locale("ru", "RU");
            } else if(idIdioma == 6){
                loc = new Locale("pl", "PL");
            }
            try {
                reporte.crearPDF(idProyecto, getCurrentUser(), getCurrentUser().getEmail(), false, loc);
            } catch (SQLException ex) {
                Logger.getLogger(ProyectoAgregadoBacking.class.getName()).log(Level.SEVERE, null, ex);
            }
        }


            //Si el usuario es administrador: Reduce el stock
        if(getCurrentUser().getRol().compareTo("0") == 0){
            fabricar();
        }    

    }


}

Reporte.java

@ManagedBean
@ApplicationScoped
public class Reportes
{
    public void crearPDF(Integer idProyecto, Usuarios usuario, String email, Boolean archivoDoc, Locale locale) throws SQLException
    {
        System.err.println("Entrando en crearPDF");
        //String ruta = "\\SERVER\producción\PDFAPP\" + usuario.getNombre() + "\";
        String ruta = "/home/haritz/pdfapp/" + usuario.getNombre() + "/";
        Integer versionProyecto;

        File rutaFile = new File(ruta);

        JRPdfExporter exp = new JRPdfExporter();
        JRPdfExporter exp2 = new JRPdfExporter();
        JRDocxExporter expD = new JRDocxExporter();

        Connection conn = null;

        if(!rutaFile.exists()){
            rutaFile.mkdirs();
        }

        MailUtil mUtil = new MailUtil();

        String nombreProyecto;

        FacesContext context = FacesContext.getCurrentInstance();

        //LOCALIZACIÓN DE INFORMES

        //Si no viene especificado por el administrador, extraer el idioma del contexto (establecido en función del usuario)
        if(locale == null){
            locale = context.getViewRoot().getLocale();
        }
        //Genera el ResourceBundle que le pasaremos por parámetro
        ResourceBundle rb = ResourceBundle.getBundle("com.appglass.jasper.resources.report", locale);

        //Introducimos los parámetros necesarios
        HashMap <String, Object> map = new HashMap <String, Object>();

        map.put("rutaImagenes", (Object) rutaImagenes);
        map.put("idProyecto", (Object) idProyecto);
        map.put("archivoDoc", (Object) archivoDoc);
        map.put(JRParameter.REPORT_LOCALE,locale);
        map.put(JRParameter.REPORT_RESOURCE_BUNDLE, rb);

        Session session = HibernateUtil.getSessionFactory().getCurrentSession();

        Transaction tx = session.beginTransaction();
        try{


            //Nuevo para conseguir session.connection() en hibernate 4.x
            SessionFactoryImpl sessionFactory = (SessionFactoryImpl) session.getSessionFactory();
            conn = sessionFactory.getConnectionProvider().getConnection();
            //session.connection() fue borrado en hibernate 4.x
            //conn = session.connection();

/*JRProperties.setProperty("net.sf.jasperreports.default.pdf.font.name", "Deja Vu Sans");

JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params);

JasperExportManager.exportReportToPdfFile(jasperPrint, outputFileName);            */
            InputStream reporte = (InputStream) getClass().getResourceAsStream("/com/appglass/jasper/report2.jasper");
            InputStream reporte2 = (InputStream) getClass().getResourceAsStream("/com/appglass/jasper/report2_subreport1B.jasper");
            InputStream reporte3 = (InputStream) getClass().getResourceAsStream("/com/appglass/jasper/report2_subreport2B.jasper");
            InputStream reporte4 = (InputStream) getClass().getResourceAsStream("/com/appglass/jasper/report2_plano.jasper");
            InputStream reporte5 = (InputStream) getClass().getResourceAsStream("/com/appglass/jasper/report2_resumen.jasper");
            // Path completo C:/Users/pool/Documents/NetBeansProjects/AppGlass/src/java

            if ((reporte == null) || reporte2 == null || reporte3 == null || reporte4 == null){
                System.err.println("No se ha encontrado el archivo .jasper");
            }

            JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, map, conn);
            System.err.println("Report1 done");
            JasperPrint jasperPrint2 = JasperFillManager.fillReport(reporte2, map, conn); //THIS RISES AN ERROR
            JasperPrint jasperPrint3 = JasperFillManager.fillReport(reporte3, map, conn);
            JasperPrint jasperPrint4 = JasperFillManager.fillReport(reporte4, map, conn);
            JasperPrint jasperPrint5 = JasperFillManager.fillReport(reporte5, map, conn);
            System.err.println("Antes de llamar a JasperViewer.viewReport");


            //Para exportar el PDF al cliente
            HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();


            List list = new ArrayList();
            list.add(jasperPrint4);
            list.add(jasperPrint5);
            list.add(jasperPrint);
            list.add(jasperPrint2);
            list.add(jasperPrint3);


            if(!archivoDoc){
                exp.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, list);
                exp2.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, list);
                exp.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");
                exp.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");
            }

            nombreProyecto = queryGetNombreProyecto(conn, idProyecto);


            versionProyecto = queryGetVersionProyecto(conn, idProyecto);

            if(!archivoDoc){
                //Fijamos como salida un fichero en SERVER
                exp2.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, ruta + nombreProyecto + "version" + (versionProyecto + 1) + ".pdf");
                exp2.setParameter(JRPdfExporterParameter.METADATA_AUTHOR, usuario.getNombre());
                exp2.setParameter(JRPdfExporterParameter.METADATA_TITLE, nombreProyecto);
                exp2.exportReport();
            } else {
                expD.setParameter(JRDocxExporterParameter.JASPER_PRINT_LIST, list);
                //Fijamos como salida un fichero en SERVER
                expD.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, ruta + nombreProyecto + "(" + (versionProyecto + 1) + ").doc");

                //Fijamos como salida la un fichero en el servidor remoto
                expD.exportReport();
            }

            //Enviamos el mail de confirmación con el informe adjunto
            mUtil.confirmacionInforme(email, usuario, nombreProyecto, archivoDoc, versionProyecto + 1);

            //Fijamos como salida el lector de PDF del navegador
            if(!archivoDoc){

               response.setHeader("Content-Type", "application/pdf; charset=UTF-8");
               response.setHeader("Content-disposition", "attachment; filename*=UTF-8\'\'" + URLEncoder.encode(nombreProyecto, "UTF-8") + ".pdf");
               exp.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
               exp.exportReport();
            }


        }catch(SQLException sqlEx){
            System.err.println("Error creando el PDF");
            System.err.println(sqlEx.getClass());
            System.err.println(sqlEx.getCause());
            System.err.println(sqlEx.getMessage());

        }
        catch (HibernateException ex)
        {

            System.err.println("Error creando el PDF");
            System.err.println(ex.getClass());
            System.err.println(ex.getCause());
            System.err.println(ex.getMessage());

        } catch (JRException ex) {
            System.err.println("Error creando el PDF");
            System.err.println(ex.getClass());
            System.err.println(ex.getCause());
            System.err.println(ex.getMessage());
        } catch (IOException ex) {
            System.err.println("Error creando el PDF");
            System.err.println(ex.getClass());
            System.err.println(ex.getCause());
            System.err.println(ex.getMessage());
        } finally {

            if(conn != null){
                tx.commit();
                conn.close();
            }
        }
        FacesContext.getCurrentInstance().responseComplete();
    }
}

ConstantesDAO.java

public Constantes cargarConstantes() throws IndexOutOfBoundsException
    {
        Constantes c = new Constantes();
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        try
        {
            c = (Constantes) session.createCriteria(Constantes.class).
                    add(Restrictions.eq("id", 1)).
                    list().get(0);
            session.getTransaction().commit();
        }
        catch (IndexOutOfBoundsException ex)
        {
            session.getTransaction().rollback();
            throw new IndexOutOfBoundsException("Problema al cargar las constantes de la base de datos. Espere unos minutos y vuelva a intentarlo.");
        } 
        return c;

更新: 我删除了 PDF 的所有页面,除了一页,即:
这已经不是了

JasperPrint jasperPrint2 = JasperFillManager.fillReport(reporte2, map, conn); //THIS RISES AN ERROR
JasperPrint jasperPrint3 = JasperFillManager.fillReport(reporte3, map, conn);
JasperPrint jasperPrint4 = JasperFillManager.fillReport(reporte4, map, conn);
JasperPrint jasperPrint5 = JasperFillManager.fillReport(reporte5, map, conn);

代码中只有这个,而且有效!

JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, map, conn);

但我需要所有页面,而不仅仅是一页。

我已经修好了。我仍然不知道为什么它以前在服务器中不起作用,而在本地主机中却起作用。无论如何,我已经在 Reportes.java crearPDF(...) 中更改为:

Session session = HibernateUtil.getSessionFactory().getCurrentSession();

作者:

Session session = HibernateUtil.getSessionFactory().openSession();

在函数的末尾,我在 finally 块中调用了 session.close()。