当前位置: 首页 > 知识库问答 >
问题:

贾斯珀在jsf应用程序中报告赫鲁库

曹德明
2023-03-14

我正在一个使用贾斯珀报告的应用程序工作。它与莫哈拉一起使用Primefaces,并部署在码头。当我在本地部署应用时,它确实可以正常工作。但是当我在赫鲁库部署时,它不起作用。

当我把它部署到赫鲁库时,我得到:

HTTP错误500

访问/clients.pdf时出现问题。原因:

Server Error Caused by:

java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2310)和java.io.ObjectInputStream$Peek InputStream.readFully(ObjectnPutStream.java:2323)和java.io.Object InputStream$BlockDataInputStream。readShort(ObjectImputStream.java:2794)以及java.io.ObjectImput Stream.readStreamHeader(ObjectOutStream.java:801)上的java.lang.NullPointerException。(ObjectInputStream.java:299)在net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream(ContextClassLoaderObjectInputStream.java:58)在net.sf.jasperReport.engine.util.JRLoader.loadObject(jrloard.java:244)在net.sf.jasperreports.enginee.util.jrloaderObjectObject(jreloader.java:229)在net.sf.jasperreports.engine.jasperUnmanager.runToPdfStream(jasperunmanager.java:201)在co.qcsc.spatha.web.servlet.ReportServlet.generateReport(reportServelet.java:72)在co.qcsc.spatha.web.servlet.com在co.qcsc.spath.web.servlet.ReportServlet.processRequest(report servlet.java:37)上(ReportServlet.java:25)在javax.servlet.http.HttpServlet.服务(HttpServlet.java:735)在java.servlet.http.HttpServlet.service(http servlet.java:848)在org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:598)在org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(openentityManagernviewFilter.java:180)在org.spring.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107),在org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFiler(ServletHandler.java:1338)在org.eclipse.jetty.server.handler.ScopedHandler.handle(scopedAndler.java:119)位于org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)位于org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandle.java:231)位于org.eclipse.jetty.server.handler.ContextHandler.doHandler(ContextHandlerJava:1065)位于org/eclipse(ServletHandler.java:413)在org.eclipse.jetty.server.session.SessionHandler.doScope(sessionHandlerjava:192)在org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandlerCollection.java:999)在org.eclipse.jetty.server.handler.ScopedHandler.handler(scopedHandlerJava:117)在org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)位于org.eclipses.jetty.server.handler.handlerrapprapper.hande(handler-wrapper.java:111)位于org.eclipse.jetty.server.server.handler(server.java:350),位于org.eclipse.jettyServer.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:890)在org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944)在org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630),在org.eclipse.jetty.server.AsyncHttpConnect.handle(AsynchttpConnections.java:77)在org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:620)在org.eclipses.jetty.io.nio.selectionChannelEndEndpoint$1.run(SelECTChannelEndendpoint.java:46)在org.eclipse.jetty.util.thread.QueuedtThreadPool.runJob(QueuedThreadPool.java:603)在组织.eclipse.jetty.util.thread.ThreadPool3.run运行

发送pdf报告的代码如下:

public class ReportServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        generateReport(request, response);
    }

    public void generateReport(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        Connection connection;
        InputStream reportStream =getServletConfig().getServletContext().getResourceAsStream(
                "/resources/reports/index.jasper");
        ServletOutputStream servletOutputStream = response.getOutputStream();
        try {
            Class.forName("org.postgresql.Driver");
            connection = DriverManager.getConnection(
                    "jdbc:postgresql://localhost:5432/sid", "sid",
                    "sid");
            response.setContentType("application/pdf");
            JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, new HashMap(),
                    connection);
            connection.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (JRException e) {
            e.printStackTrace();
        }
        servletOutputStream.flush();
        servletOutputStream.close();
    }

在c.xhtml中:

...
    <h:form id="reportForm">
        <p:commandButton value="Generate Report" id="generate_report"
                oncomplete="reportDialogWidget.show()"/>
    </h:form>
    <p:dialog id="reportDialog" modal="true" widgetVar="reportDialogWidget" dynamic="true" resizable="true" maximizable="true" showEffect="fade" hideEffect="explode">
        <iframe src="/clients.pdf" width="800" height="600"></iframe>
    </p:dialog>
...

与 Web 中的此 servlet 相关的部分.xml:

  <servlet>
    <servlet-name>ReportServlet</servlet-name>
    <servlet-class>com.jg.servlet.ReportServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>ReportServlet</servlet-name>
    <url-pattern>/clients.pdf</url-pattern>
  </servlet-mapping>

我一直在寻找,但我没有找到任何对我有帮助的东西。我认为这是信息足以得到一些帮助,但如果我缺少什么,请告诉我,我会添加任何需要的东西。

提前感谢您阅读我的问题。

共有1个答案

顾超
2023-03-14

这句话的意思是:

InputStream reportStream =getServletConfig().getServletContext().getResourceAsStream(
            "/resources/reports/index.jasper");

将资源作为流获取时,必须确保资源存在。赫鲁库可能没有找到它。检查它是否也已提交,或者最好在使用之前在 reportStream 上检查空指针异常。

 类似资料:
  • 我正在与Jaspersoft Studio开发一些报告 我有一个web应用程序,它应该接受REST查询,并将它们转换为编译的报告 所以我包含了一些JasperReports jar: < li>groovy-all-2.0.1.jar < li>iText-2.1.7.js2.jar < li>jasperreports-5.2.0.jar 问题是当我编译我的报告并从Jaspersoft Stud

  • 我使用的是Jaspersoft Studio版本6.3.0.final和JasperReports库版本6.3.0。我正在创建一个具有不同系列和类别值的折线图。我的问题是,在绘制图表时,我观察到,如果一个类别中没有某个特定系列的值,则线条会断开,并从下一个数据点重新开始。 是否有任何方法可以连接特定序列中的所有点,使其成为一条连续的单线,而不是虚线和点? 我用一个图像作为我得到和想要做的事情的示例

  • 我正在尝试从servlet(viewcurrentstock.java)检索一个属性到jsp(viewstock.jsp)。这里有一个例外提示:“org.apache.jasper.JasperException:java.lang.NullPointerException” 查看当前股票。JAVA viewstock.jsp 服务器日志:

  • 我的jsp有一个代码: 这是我的servlet: 当我点击登录按钮时,我有一个错误。 提前谢谢

  • 我在生产服务器上部署了我的项目,并得到以下错误。 这是一个实时项目,所以,在出现错误后,我用运行良好的前一个版本替换了它,但现在它也抛出了相同的错误。请告诉我有什么问题? 错误: InExpage。jsp:

  • 我为在线DVD商店创建了一个EJB应用程序。我使用Netbean 7.2.1和Glassfish 3.1.2当我运行index.jsp时,它的界面启动成功,如果我单击表单提交按钮,我会收到此错误: 在Netbean中,我得到了这个错误: 我创建了一个JavaEE企业应用程序。我有项目ejb和项目战争。因为我无法直接从ejb创建SessionBean,所以我创建了一个新的项目/Java库类,并在那里