Servlet exception caught: Status 500 Dispatch to method returned exception

Hi,

I am adding a jasper report to my existing web application running on top of struts 1.0.x. I managed to compile and view my report by using ireport 0.5.1. When I wrote some code to load-compile-fill-export to pdf, I encounter the following error. Can anyone help me to tell me what is going wrong?

Btw, I am using struts framework whereby the request is received and processed by the ActionForm. And from there, i pass it to a self written DAO to generate the report.

Here are the code snippet,

Inside action class

===============

public ActionForward monthlybyvenue(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response) throws Exception {

ReportingForm rptfrm = (ReportingForm) form;

ReportDAO rptDAO = new ReportDAO();

DateUtils dutil = new DateUtils();

String searchmonthfrm = rptfrm.getSearchmonthfrm();

String searchyearfrm =rptfrm.getSearchyearfrm();

String searchmonthto = rptfrm.getSearchmonthfrm();

String searchyearto = rptfrm.getSearchyearto();

int lastDayOfMonth = dutil.getMaxDayOfMonth(Integer.parseInt(searchyearto),dutil.getIntMonth(searchmonthto));

String periodFrom = "01/" + convertMonth(String.valueOf(dutil.getIntMonth(searchmonthfrm))) + "/" + searchyearfrm;

String periodTo = lastDayOfMonth + "/" + convertMonth(String.valueOf(dutil.getIntMonth(searchmonthto))) + "/" + searchyearto;

String jasperXmlFile = request.getRealPath("/WEB-INF/classes/my/com/cni/mrbs/report/template/jrxml/monthlyRoomBookingByVenue.jrxml");

String pdfFile = request.getRealPath("/WEB-INF/classes/my/com/cni/mrbs/report/monthlyRoomBookingByVenue.pdf");

rptDAO.genPdfReport(periodFrom, periodTo, jasperXmlFile, pdfFile);

return mapping.findForward("monthlybyvenue");

}

Inside DAO class

==============

public void genPdfReport (String periodFrom, String periodTo, String designFile, String pdfFile) throws Exception{

Connection conn = null;

try {

boolean hasConnection = chkConnection();

if(!hasConnection)

conn = getConnection();

else

conn = this.globalConn;

JasperDesign jasperDesign = JRXmlLoader.load(designFile);

JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

Map parameters = new HashMap();

parameters.put("date_from", Helper.str2date(periodFrom));

parameters.put("date_to", Helper.str2date(periodTo));

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);

JasperExportManager.exportReportToPdfFile(jasperPrint, pdfFile);

chkReturnConn(conn);

}catch (Exception e) {

e.printStackTrace();

throw e;

}

}

Here are the error stack,

Jan 15, 2007 7:58:41 PM org.apache.struts.actions.DispatchAction dispatchMethod

SEVERE: Dispatch[/report] to method monthlybyvenue returned an exception

java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)

at my.com.cni.mrbs.base.BaseAction.execute(BaseAction.java:72)

at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)

at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)

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

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

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

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

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)

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

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

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)

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

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

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/digester/SetNestedPropertiesRule

at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:200)

at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:165)

at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:149)

at my.com.cni.mrbs.dao.ReportDAO.genPdfReport(ReportDAO.java:55)

at my.com.cni.mrbs.report.action.ReportingAction.monthlybyvenue(ReportingAction.java:135)

... 41 more

[7234 byte] By [Kawablancaa] at [2007-11-26 15:08:00]
# 1

The relevant part of the stack trace is :

"Caused by: java.lang.NoClassDefFoundError: org/apache/commons/digester/SetNestedPropertiesRule"

Means you need to add the Apache Commons Digester to the classpath of your application.

http://jakarta.apache.org/commons/digester/

The digester package may be reference by a class in another Apache project which is why you don't see the error during the compile.

tolmanka at 2007-7-8 8:58:26 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 2

Hi Tolmank,

Thanks for the hints. I manage to proceed from the error. But there is another error appears. Do you have any idea?

error stack trace

=============

net.sf.jasperreports.engine.JRException: Attribute "" bound to namespace "null" was already specified for element "jasperReport".

at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:240)

at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:223)

at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:211)

at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:165)

at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:149)

at my.com.cni.mrbs.dao.ReportDAO.genPdfReport(ReportDAO.java:55)

at my.com.cni.mrbs.report.action.ReportingAction.monthlybyvenue(ReportingAction.java:135)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)

at my.com.cni.mrbs.base.BaseAction.execute(BaseAction.java:72)

at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)

at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)

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

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

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

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

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)

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

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

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)

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

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

Caused by: org.xml.sax.SAXParseException: Attribute "" bound to namespace "null" was already specified for element "jasperReport".

at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)

at org.apache.commons.digester.Digester.parse(Digester.java:1647)

at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:236)

... 47 more

Kawablancaa at 2007-7-8 8:58:26 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 3

I managed to resolve the problem by including 6 jar files in my WEB-INF/lib folder. There are

-commons-beanutils-1.5.jar

-commons-collections-2.1.jar

-commons-digester-1.7.jar

-xml-apis.jar

-xmlParserAPIs.jar

-xercesImpl.jar

However i am facing new problem. The error stack as follows; It is found that from various blog and forum tht I need a jdt-compiler.jar file to include into /WEB-INF/lib folder too.

Does anyone know where can i get the file jdt-compiler.jar?

error stack

========

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

See error messages above.

at net.sf.jasperreports.engine.design.JRAbstractClassCompiler.compileReport(JRAbstractClassCompiler.java:109)

at net.sf.jasperreports.engine.design.JRDefaultCompiler.compileReport(JRDefaultCompiler.java:129)

at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:211)

at my.com.cni.mrbs.dao.ReportDAO.genPdfReport(ReportDAO.java:56)

at my.com.cni.mrbs.report.action.ReportingAction.monthlybyvenue(ReportingAction.java:135)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)

at my.com.cni.mrbs.base.BaseAction.execute(BaseAction.java:72)

at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)

at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)

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

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

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

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

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

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

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)

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

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

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)

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

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

Kawablancaa at 2007-7-8 8:58:26 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...