You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by William Miles <th...@tdcspace.dk> on 2002/12/07 21:29:02 UTC

Help needed: Digester parse() cause InvocationTargetException

Hi,

I would appreciate it if somebody can help me with the following:

I have created a class called JournalServlet, which is the equivilant of 
the DatabaseServlet class in the struts-example webapp.





Here is the load method:
------------------------

private synchronized void load() throws Exception {

	journal = new Hashtable();

	if (debug >= 1)
	    log("Loading journal from '" + pathname + "'");
         InputStream is = getServletContext().getResourceAsStream(pathname);
         if (is == null) {
             log("No such resource available - loading empty journal");
             return;
         }

	BufferedInputStream input = new BufferedInputStream(is);

	Digester digester = new Digester();
	digester.push(this);
	digester.setDebug(debug);
	digester.setValidating(false);
	digester.addObjectCreate("journal/person","GRP2.PJE.Person");
	digester.addSetProperties("journal/person");
	digester.addSetNext("journal/person", "setPerson");

         digester.parse(input);
         input.close();

     }





And here is the xml file to parse:
----------------------------------

<journal>
   <person cpr="12345" name="William Miles"></person>
</journal>




Which gives me the following exception:
---------------------------------------

2002-12-07 21:02:23 journal: Initializing journal servlet
2002-12-07 21:02:23 journal: Loading journal from '/WEB-INF/journal.xml'
2002-12-07 21:02:23 journal: Journal load exception
java.lang.reflect.InvocationTargetException
	at org.apache.struts.digester.Digester.endElement(Digester.java:412)
	at 
org.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:572)
	at 
org.apache.xerces.impl.XMLNamespaceBinder.endElement(XMLNamespaceBinder.java:646)
	at 
org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:1972)
	at 
org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:878)
	at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.handleEndElement(XMLDocumentFragmentScannerImpl.java:1144)
	at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:987)
	at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1445)
	at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:333)
	at 
org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:524)
	at 
org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:580)
	at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)
	at 
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1169)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:363)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:137)
	at org.apache.struts.digester.Digester.parse(Digester.java:755)
	at GRP2.PJE.JournalServlet.load(JournalServlet.java:160)
	at GRP2.PJE.JournalServlet.init(JournalServlet.java:97)
	at javax.servlet.GenericServlet.init(GenericServlet.java:256)
	at 
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:924)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:813)
	at 
org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3341)
	at 
org.apache.catalina.core.StandardContext.reload(StandardContext.java:2548)
	at 
org.apache.catalina.servlets.ManagerServlet.reload(ManagerServlet.java:740)
	at 
org.apache.catalina.servlets.HTMLManagerServlet.reload(HTMLManagerServlet.java:325)
	at 
org.apache.catalina.servlets.HTMLManagerServlet.doGet(HTMLManagerServlet.java:143)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
	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:260)
	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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527)
	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.StandardContext.invoke(StandardContext.java:2396)
	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:170)
	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:405)
	at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
	at 
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
	at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
	at java.lang.Thread.run(Thread.java:536)


I have tried to look through the archives to see if anybody else 
experienced the same problem, no luck.

Any help will be greatly appreciated.

Thanks
William


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: Help needed: Digester parse() cause InvocationTargetException

Posted by William Miles <th...@tdcspace.dk>.
William Miles wrote:

> Hi,
>
> I would appreciate it if somebody can help me with the following:
>
> I have created a class called JournalServlet, which is the equivilant 
> of the DatabaseServlet class in the struts-example webapp.
>
>
>
>
>
> Here is the load method:
> ------------------------
>
> private synchronized void load() throws Exception {
>
>     journal = new Hashtable();
>
>     if (debug >= 1)
>         log("Loading journal from '" + pathname + "'");
>         InputStream is = 
> getServletContext().getResourceAsStream(pathname);
>         if (is == null) {
>             log("No such resource available - loading empty journal");
>             return;
>         }
>
>     BufferedInputStream input = new BufferedInputStream(is);
>
>     Digester digester = new Digester();
>     digester.push(this);
>     digester.setDebug(debug);
>     digester.setValidating(false);
>     digester.addObjectCreate("journal/person","GRP2.PJE.Person");
>     digester.addSetProperties("journal/person");
>     digester.addSetNext("journal/person", "setPerson");
>
>         digester.parse(input);
>         input.close();
>
>     }
>
>
>
>
>
> And here is the xml file to parse:
> ----------------------------------
>
> <journal>
>   <person cpr="12345" name="William Miles"></person>
> </journal>
>
>
>
>
> Which gives me the following exception:
> ---------------------------------------
>
> 2002-12-07 21:02:23 journal: Initializing journal servlet
> 2002-12-07 21:02:23 journal: Loading journal from '/WEB-INF/journal.xml'
> 2002-12-07 21:02:23 journal: Journal load exception
> java.lang.reflect.InvocationTargetException
>     at org.apache.struts.digester.Digester.endElement(Digester.java:412)
>     at 
> org.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:572) 
>
>     at 
> org.apache.xerces.impl.XMLNamespaceBinder.endElement(XMLNamespaceBinder.java:646) 
>
>     at 
> org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:1972) 
>
>     at 
> org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:878) 
>
>     at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.handleEndElement(XMLDocumentFragmentScannerImpl.java:1144) 
>
>     at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:987) 
>
>     at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1445) 
>
>     at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:333) 
>
>     at 
> org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:524) 
>
>     at 
> org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:580) 
>
>     at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)
>     at 
> org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1169) 
>
>     at javax.xml.parsers.SAXParser.parse(SAXParser.java:363)
>     at javax.xml.parsers.SAXParser.parse(SAXParser.java:137)
>     at org.apache.struts.digester.Digester.parse(Digester.java:755)
>     at GRP2.PJE.JournalServlet.load(JournalServlet.java:160)
>     at GRP2.PJE.JournalServlet.init(JournalServlet.java:97)
>     at javax.servlet.GenericServlet.init(GenericServlet.java:256)
>     at 
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:924) 
>
>     at 
> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:813)
>     at 
> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3341) 
>
>     at 
> org.apache.catalina.core.StandardContext.reload(StandardContext.java:2548) 
>
>     at 
> org.apache.catalina.servlets.ManagerServlet.reload(ManagerServlet.java:740) 
>
>     at 
> org.apache.catalina.servlets.HTMLManagerServlet.reload(HTMLManagerServlet.java:325) 
>
>     at 
> org.apache.catalina.servlets.HTMLManagerServlet.doGet(HTMLManagerServlet.java:143) 
>
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>     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:260) 
>
>     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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527) 
>
>     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.StandardContext.invoke(StandardContext.java:2396) 
>
>     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:170) 
>
>     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:405) 
>
>     at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380) 
>
>     at 
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508) 
>
>     at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533) 
>
>     at java.lang.Thread.run(Thread.java:536)
>
>
> I have tried to look through the archives to see if anybody else 
> experienced the same problem, no luck.
>
> Any help will be greatly appreciated.
>
> Thanks
> William
>
>
> -- 
> To unsubscribe, e-mail:   
> <ma...@jakarta.apache.org>
> For additional commands, e-mail: 
> <ma...@jakarta.apache.org>
>
>
Something else that might help, the exception is thrown when the
   
    digester.parse(input);

is called.

Thanks William



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: Help needed: Digester parse() cause InvocationTargetException

Posted by William Miles <th...@tdcspace.dk>.
Thanks for the help Craig.

The problem was that there was a syntax error, one of the methods where 
uppercase(setCPR()), and Digester was looking for setCpr().

Cheers William

Craig R. McClanahan wrote:

>On Sat, 7 Dec 2002, William Miles wrote:
>
>  
>
>>Date: Sat, 07 Dec 2002 21:29:02 +0100
>>From: William Miles <th...@tdcspace.dk>
>>Reply-To: Struts Users Mailing List <st...@jakarta.apache.org>
>>To: struts-user@jakarta.apache.org
>>Subject: Help needed: Digester parse() cause InvocationTargetException
>>
>>Hi,
>>
>>I would appreciate it if somebody can help me with the following:
>>
>>I have created a class called JournalServlet, which is the equivilant of
>>the DatabaseServlet class in the struts-example webapp.
>>
>>
>>    
>>
>
>In general, InvocationTargetException means that you're using Java
>reflection to call a method dynamically (which Digester an BeanUtils do
>for you), and the method you called threw an exception.
>
>In the case at hand, it looks like there are at least two potential
>problems:
>
>* You're defining a call to a setPerson() method on the "next" object
>  in the evaluation stack, which would be an instance of the class
>  that contains this load() method.  Does that class have a setPerson()
>  method?
>
>* If you don't tell it otherwise, SetNextRule (and other similar
>  standard rules) assume that the argument type is a String.  It
>  looks like you really want it to be an GRP2.PJE.Person instead.
>  Try changing the last setup statement to:
>
>  digester.addSetNext("journal/person", "setPerson",
>                      "GRP2.PJE.Person");
>
>Craig
>
>
>  
>
>>
>>Here is the load method:
>>------------------------
>>
>>private synchronized void load() throws Exception {
>>
>>	journal = new Hashtable();
>>
>>	if (debug >= 1)
>>	    log("Loading journal from '" + pathname + "'");
>>         InputStream is = getServletContext().getResourceAsStream(pathname);
>>         if (is == null) {
>>             log("No such resource available - loading empty journal");
>>             return;
>>         }
>>
>>	BufferedInputStream input = new BufferedInputStream(is);
>>
>>	Digester digester = new Digester();
>>	digester.push(this);
>>	digester.setDebug(debug);
>>	digester.setValidating(false);
>>	digester.addObjectCreate("journal/person","GRP2.PJE.Person");
>>	digester.addSetProperties("journal/person");
>>	digester.addSetNext("journal/person", "setPerson");
>>
>>         digester.parse(input);
>>         input.close();
>>
>>     }
>>
>>
>>
>>
>>
>>And here is the xml file to parse:
>>----------------------------------
>>
>><journal>
>>   <person cpr="12345" name="William Miles"></person>
>></journal>
>>
>>
>>
>>
>>Which gives me the following exception:
>>---------------------------------------
>>
>>2002-12-07 21:02:23 journal: Initializing journal servlet
>>2002-12-07 21:02:23 journal: Loading journal from '/WEB-INF/journal.xml'
>>2002-12-07 21:02:23 journal: Journal load exception
>>java.lang.reflect.InvocationTargetException
>>	at org.apache.struts.digester.Digester.endElement(Digester.java:412)
>>	at
>>org.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:572)
>>	at
>>org.apache.xerces.impl.XMLNamespaceBinder.endElement(XMLNamespaceBinder.java:646)
>>	at
>>org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:1972)
>>	at
>>org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:878)
>>	at
>>org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.handleEndElement(XMLDocumentFragmentScannerImpl.java:1144)
>>	at
>>org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:987)
>>	at
>>org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1445)
>>	at
>>org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:333)
>>	at
>>org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:524)
>>	at
>>org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:580)
>>	at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)
>>	at
>>org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1169)
>>	at javax.xml.parsers.SAXParser.parse(SAXParser.java:363)
>>	at javax.xml.parsers.SAXParser.parse(SAXParser.java:137)
>>	at org.apache.struts.digester.Digester.parse(Digester.java:755)
>>	at GRP2.PJE.JournalServlet.load(JournalServlet.java:160)
>>	at GRP2.PJE.JournalServlet.init(JournalServlet.java:97)
>>	at javax.servlet.GenericServlet.init(GenericServlet.java:256)
>>	at
>>org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:924)
>>	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:813)
>>	at
>>org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3341)
>>	at
>>org.apache.catalina.core.StandardContext.reload(StandardContext.java:2548)
>>	at
>>org.apache.catalina.servlets.ManagerServlet.reload(ManagerServlet.java:740)
>>	at
>>org.apache.catalina.servlets.HTMLManagerServlet.reload(HTMLManagerServlet.java:325)
>>	at
>>org.apache.catalina.servlets.HTMLManagerServlet.doGet(HTMLManagerServlet.java:143)
>>	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>>	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:260)
>>	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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527)
>>	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.StandardContext.invoke(StandardContext.java:2396)
>>	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:170)
>>	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:405)
>>	at
>>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
>>	at
>>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
>>	at
>>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
>>	at java.lang.Thread.run(Thread.java:536)
>>
>>
>>I have tried to look through the archives to see if anybody else
>>experienced the same problem, no luck.
>>
>>Any help will be greatly appreciated.
>>
>>Thanks
>>William
>>
>>
>>--
>>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>>For additional commands, e-mail: <ma...@jakarta.apache.org>
>>
>>
>>    
>>
>
>
>--
>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>
>
>
>  
>




--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: Help needed: Digester parse() cause InvocationTargetException

Posted by "Craig R. McClanahan" <cr...@apache.org>.

On Sat, 7 Dec 2002, William Miles wrote:

> Date: Sat, 07 Dec 2002 21:29:02 +0100
> From: William Miles <th...@tdcspace.dk>
> Reply-To: Struts Users Mailing List <st...@jakarta.apache.org>
> To: struts-user@jakarta.apache.org
> Subject: Help needed: Digester parse() cause InvocationTargetException
>
> Hi,
>
> I would appreciate it if somebody can help me with the following:
>
> I have created a class called JournalServlet, which is the equivilant of
> the DatabaseServlet class in the struts-example webapp.
>
>

In general, InvocationTargetException means that you're using Java
reflection to call a method dynamically (which Digester an BeanUtils do
for you), and the method you called threw an exception.

In the case at hand, it looks like there are at least two potential
problems:

* You're defining a call to a setPerson() method on the "next" object
  in the evaluation stack, which would be an instance of the class
  that contains this load() method.  Does that class have a setPerson()
  method?

* If you don't tell it otherwise, SetNextRule (and other similar
  standard rules) assume that the argument type is a String.  It
  looks like you really want it to be an GRP2.PJE.Person instead.
  Try changing the last setup statement to:

  digester.addSetNext("journal/person", "setPerson",
                      "GRP2.PJE.Person");

Craig


>
>
>
> Here is the load method:
> ------------------------
>
> private synchronized void load() throws Exception {
>
> 	journal = new Hashtable();
>
> 	if (debug >= 1)
> 	    log("Loading journal from '" + pathname + "'");
>          InputStream is = getServletContext().getResourceAsStream(pathname);
>          if (is == null) {
>              log("No such resource available - loading empty journal");
>              return;
>          }
>
> 	BufferedInputStream input = new BufferedInputStream(is);
>
> 	Digester digester = new Digester();
> 	digester.push(this);
> 	digester.setDebug(debug);
> 	digester.setValidating(false);
> 	digester.addObjectCreate("journal/person","GRP2.PJE.Person");
> 	digester.addSetProperties("journal/person");
> 	digester.addSetNext("journal/person", "setPerson");
>
>          digester.parse(input);
>          input.close();
>
>      }
>
>
>
>
>
> And here is the xml file to parse:
> ----------------------------------
>
> <journal>
>    <person cpr="12345" name="William Miles"></person>
> </journal>
>
>
>
>
> Which gives me the following exception:
> ---------------------------------------
>
> 2002-12-07 21:02:23 journal: Initializing journal servlet
> 2002-12-07 21:02:23 journal: Loading journal from '/WEB-INF/journal.xml'
> 2002-12-07 21:02:23 journal: Journal load exception
> java.lang.reflect.InvocationTargetException
> 	at org.apache.struts.digester.Digester.endElement(Digester.java:412)
> 	at
> org.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:572)
> 	at
> org.apache.xerces.impl.XMLNamespaceBinder.endElement(XMLNamespaceBinder.java:646)
> 	at
> org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:1972)
> 	at
> org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:878)
> 	at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.handleEndElement(XMLDocumentFragmentScannerImpl.java:1144)
> 	at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:987)
> 	at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1445)
> 	at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:333)
> 	at
> org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:524)
> 	at
> org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:580)
> 	at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)
> 	at
> org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1169)
> 	at javax.xml.parsers.SAXParser.parse(SAXParser.java:363)
> 	at javax.xml.parsers.SAXParser.parse(SAXParser.java:137)
> 	at org.apache.struts.digester.Digester.parse(Digester.java:755)
> 	at GRP2.PJE.JournalServlet.load(JournalServlet.java:160)
> 	at GRP2.PJE.JournalServlet.init(JournalServlet.java:97)
> 	at javax.servlet.GenericServlet.init(GenericServlet.java:256)
> 	at
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:924)
> 	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:813)
> 	at
> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3341)
> 	at
> org.apache.catalina.core.StandardContext.reload(StandardContext.java:2548)
> 	at
> org.apache.catalina.servlets.ManagerServlet.reload(ManagerServlet.java:740)
> 	at
> org.apache.catalina.servlets.HTMLManagerServlet.reload(HTMLManagerServlet.java:325)
> 	at
> org.apache.catalina.servlets.HTMLManagerServlet.doGet(HTMLManagerServlet.java:143)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> 	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:260)
> 	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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527)
> 	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.StandardContext.invoke(StandardContext.java:2396)
> 	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:170)
> 	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:405)
> 	at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
> 	at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
> 	at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
> 	at java.lang.Thread.run(Thread.java:536)
>
>
> I have tried to look through the archives to see if anybody else
> experienced the same problem, no luck.
>
> Any help will be greatly appreciated.
>
> Thanks
> William
>
>
> --
> To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
>
>


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>