While running Burt Report I am getting exception
I am facing this exception:-
java.lang.NullPointerException
org.eclipse.birt.report.engine.executor.ExecutionContext.setRunnable(ExecutionContext.java:1114)
org.eclipse.birt.report.engine.api.impl.EngineTask.setReportRunnable(EngineTask.java:318)
org.eclipse.birt.report.engine.api.impl.EngineTask.<init>(EngineTask.java:165)
org.eclipse.birt.report.engine.api.impl.EngineTask.<init>(EngineTask.java:176)
org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.<init>(RunAndRenderTask.java:54)
org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.createRunAndRenderTask(ReportEngineHelper.java:292)
org.eclipse.birt.report.engine.api.impl.ReportEngine.createRunAndRenderTask(ReportEngine.java:303)
com.emptoris.app.reports.helper.BirtReportServlet.doGet(BirtReportServlet.java:82)
javax.servlet.http.HttpServlet.service(HttpServlet.java:596)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
Code is failing at line:-
IRunAndRenderTask task = engine.createRunAndRenderTask( design );
Bellow is the servlet to generate birt report:-
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineConstants;
import org.eclipse.birt.report.engine.api.HTMLRenderContext;
import org.eclipse.birt.report.engine.api.HTMLRenderOption;
import org.eclipse.birt.report.engine.api.HTMLServerImageHandler;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.IReportEngine;
public class BirtReportServlet extends HttpServlet {
private EngineConfig config = null;
private IReportEngine engine = null;
public BirtReportServlet() {
super();
}
/**
* Destruction of the servlet.
*/
public void destroy() {
super.destroy();
}
/**
* The doGet method of the servlet.
*
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//get report name and launch the engine
resp.setContentType("text/html");
ServletContext sc = req.getSession().getServletContext();
IReportRunnable design;
try
{
//Open report design
design = engine.openReportDesign( "C:/BirtRptFiles/sample.rptdesign");
//create task to run and render report
IRunAndRenderTask task = engine.createRunAndRenderTask( design );
task.getAppContext().put(EngineConstants.APPCONTEXT_CLASSLOADER_KEY, BirtReportServlet.class.getClassLoader());
//set output options
HTMLRenderOption options = new HTMLRenderOption();
//set the image handler to a HTMLServerImageHandler if you plan on using the base image url.
options.setImageHandler(new HTMLServerImageHandler());
//options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_PDF);
options.setOutputStream(resp.getOutputStream());
options.setBaseImageURL(req.getContextPath()+"/images");
options.setImageDirectory(sc.getRealPath("/images"));
task.setRenderOption(options);
//run report
task.run();
task.close();
}catch (Exception e){
e.printStackTrace();
throw new ServletException( e );
}
}
/**
* The doPost method of the servlet.
*
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println(" Post Not Supported");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
/**
* Initialization of the servlet.
*
* @throws ServletException if an error occure
*/
public void init() throws ServletException {
try{
config = new EngineConfig( );
config.setEngineHome( "D:/software_d/BIRT2/birt-runtime-2_1_3/ReportEngine" );
config.setLogConfig("c:/temp", Level.FINE);
Platform.startup( config ); //If using RE API in Eclipse/RCP application this is not needed.
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
engine = factory.createReportEngine( config );
engine.changeLogLevel( Level.WARNING );
}catch( Exception ex){
ex.printStackTrace();
}
}
}
java.lang.NullPointerException
org.eclipse.birt.report.engine.executor.ExecutionContext.setRunnable(ExecutionContext.java:1114)
org.eclipse.birt.report.engine.api.impl.EngineTask.setReportRunnable(EngineTask.java:318)
org.eclipse.birt.report.engine.api.impl.EngineTask.<init>(EngineTask.java:165)
org.eclipse.birt.report.engine.api.impl.EngineTask.<init>(EngineTask.java:176)
org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.<init>(RunAndRenderTask.java:54)
org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.createRunAndRenderTask(ReportEngineHelper.java:292)
org.eclipse.birt.report.engine.api.impl.ReportEngine.createRunAndRenderTask(ReportEngine.java:303)
com.emptoris.app.reports.helper.BirtReportServlet.doGet(BirtReportServlet.java:82)
javax.servlet.http.HttpServlet.service(HttpServlet.java:596)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
Code is failing at line:-
IRunAndRenderTask task = engine.createRunAndRenderTask( design );
Bellow is the servlet to generate birt report:-
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineConstants;
import org.eclipse.birt.report.engine.api.HTMLRenderContext;
import org.eclipse.birt.report.engine.api.HTMLRenderOption;
import org.eclipse.birt.report.engine.api.HTMLServerImageHandler;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.IReportEngine;
public class BirtReportServlet extends HttpServlet {
private EngineConfig config = null;
private IReportEngine engine = null;
public BirtReportServlet() {
super();
}
/**
* Destruction of the servlet.
*/
public void destroy() {
super.destroy();
}
/**
* The doGet method of the servlet.
*
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//get report name and launch the engine
resp.setContentType("text/html");
ServletContext sc = req.getSession().getServletContext();
IReportRunnable design;
try
{
//Open report design
design = engine.openReportDesign( "C:/BirtRptFiles/sample.rptdesign");
//create task to run and render report
IRunAndRenderTask task = engine.createRunAndRenderTask( design );
task.getAppContext().put(EngineConstants.APPCONTEXT_CLASSLOADER_KEY, BirtReportServlet.class.getClassLoader());
//set output options
HTMLRenderOption options = new HTMLRenderOption();
//set the image handler to a HTMLServerImageHandler if you plan on using the base image url.
options.setImageHandler(new HTMLServerImageHandler());
//options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_PDF);
options.setOutputStream(resp.getOutputStream());
options.setBaseImageURL(req.getContextPath()+"/images");
options.setImageDirectory(sc.getRealPath("/images"));
task.setRenderOption(options);
//run report
task.run();
task.close();
}catch (Exception e){
e.printStackTrace();
throw new ServletException( e );
}
}
/**
* The doPost method of the servlet.
*
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println(" Post Not Supported");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
/**
* Initialization of the servlet.
*
* @throws ServletException if an error occure
*/
public void init() throws ServletException {
try{
config = new EngineConfig( );
config.setEngineHome( "D:/software_d/BIRT2/birt-runtime-2_1_3/ReportEngine" );
config.setLogConfig("c:/temp", Level.FINE);
Platform.startup( config ); //If using RE API in Eclipse/RCP application this is not needed.
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
engine = factory.createReportEngine( config );
engine.changeLogLevel( Level.WARNING );
}catch( Exception ex){
ex.printStackTrace();
}
}
}
0
Comments
-
Just a thought, but since you're running the report within a Servlet, should you not use the platform context in your init method?
IPlatformContext context = new PlatformServletContext
(config.getServletContext());
config.setPlatformContext(context);
This specifies the plugins location in WEB-INF/platform/plugins.
Regards,
Cedric0
Categories
- All Categories
- 107 Developer Announcements
- 53 Articles
- 104 General Questions
- 141 IM Services
- 43 OpenText Hackathon
- 32 Developer Tools
- 20.6K Analytics
- 4.1K AppWorks
- 8.9K Extended ECM
- 898 Cloud Fax and Notifications
- 76 Digital Asset Management
- 9.3K Documentum
- 29 eDOCS
- 118 Exstream
- 39.8K TeamSite
- 1.7K Web Experience Management