Jump to content
We've recently updated our Privacy Statement, available here ×

JasperReport&Servlet


developer

Recommended Posts

Hi All, sorry for my english:)

I have the next code in Servlet:

ServletOutputStream servletOutputStream = response.getOutputStream();

InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/FirstReport.jrxml");

try {

JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, new HashMap(), new JREmptyDataSource());

response.setContentType("application/pdf");

servletOutputStream.flush();

servletOutputStream.close();

} catch (JRException e) {

StringWriter stringWriter = new StringWriter();

PrintWriter printWriter = new PrintWriter(stringWriter);

e.printStackTrace(printWriter);

response.setContentType("text/plain");

response.getOutputStream().print(stringWriter.toString());

response.getOutputStream().print(e.getMessage());

 

}

 

 

But when I execute this the exception is shown:

 

 

net.sf.jasperreports.engine.JRException: Error loading object from InputStream

at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:196)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:580)

at net.sf.jasperreports.engine.JasperRunManager.runReportToPdfStream(JasperRunManager.java:368)

at bu.grsu.test.STest.processRequest(STest.java:40)

at bu.grsu.test.STest.doGet(STest.java:61)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)

at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)

at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)

at java.lang.Thread.run(Thread.java:595)

Caused by: java.io.StreamCorruptedException: invalid stream header

at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:753)

 

Thanks to All who can help me on this question.

 

P.S. May be there are some other ways how to generate report from Servlet?

 

I use Netbeans 5.5, Apache Tomcat 5.5.17.

After some changes in my code I have got the next exception:

 

 

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:

D:Program Filesnetbeans-5.5enterprise3apache-tomcat-5.5.17binsimple_1209718587554_414918.java:4: package net.sf.jasperreports.engine does not exist

import net.sf.jasperreports.engine.*;

^

D:Program Filesnetbeans-5.5enterprise3apache-tomcat-5.5.17binsimple_1209718587554_414918.java:5: package net.sf.jasperreports.engine.fill does not exist

import net.sf.jasperreports.engine.fill.*;

^

D:Program Filesnetbeans-5.5enterprise3apache-tomcat-5.5.17binsimple_1209718587554_414918.java:18: cannot find symbol

symbol: class JREvaluator

public class simple_1209718587554_414918 extends JREvaluator

 

I put the appropriate libs to Tomcat But It does't work :(

 

Can somebody give the working sample how to generate a simple emty report from Servlet with neccesarry setting in Netbeans and Tomcat

 

Thanks very much!!!

 

 

 

 

Post edited by: developer, at: 2008/05/02 09:09

Link to comment
Share on other sites

  • Replies 2
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Hi

try the following:

InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream(request.getContextPath()+"/reports/FirstReport.jrxml");

 

Where:

request is of type HttpServletRequest

 

ashosheh

Link to comment
Share on other sites

Hi;

 

If you look at the method you are using, it requires a compiled report template for the input stream.

 

http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JasperRunManager.html#runReportToPdfStream(java.io.InputStream,%20java.io.OutputStream,%20java.util.Map)

 

 

You are using the JRXML. I think you want to try something like this:

Code:

InputStream reportStream = JasperCompileManager.compileReport(context.getRealPath("/reports/ FirstReport.jrxml"));

 

HTH

 

Post edited by: lshannon, at: 2008/05/01 17:37

 

Post edited by: lshannon, at: 2008/05/01 17:38

 

Post edited by: lshannon, at: 2008/05/01 19:46

Post edited by: lshannon, at: 2008/05/01 19:48

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...