Hi,

[Tiles 2.0.4, Tomcat 5.5.25, Struts 2.0.11, struts2-tiles-plugin]

I'm trying to track down the source of the following intermittent exception. It occurs immediately after a deployment of the webapp and doesn't affect the subsequent operation of Tiles. It's definitely only a temporary issue during initialization.

2008-12-17 10:28:09,503 ERROR [http-8080-Processor24] [RoleSecurityTagSupport] Error executing tag: XML error reading definitions. org.apache.tiles.definition.DefinitionsFactoryException: XML error reading definitions. at org .apache .tiles .definition .digester .DigesterDefinitionsReader.read(DigesterDefinitionsReader.java:251)

With a breakpoint inside the DigesterDefinitionsReader I found the true cause is a SAX exception that's wrapped by the DefinitionsFactoryException (it's not logged unfortunately):

org.xml.sax.SAXException: FWK005 parse may not be called while parsing.

caught at DefinitionsFactoryException.java:251.

This SAXException implies the Xerces DocumentBuilder is being accessed in two threads simultaneously which explains the intermittent nature of the problem.

The failure to read the definitions then leads to a variety of other Tiles-related exceptions until a moment later when the definitions are correctly read. One guess is that Tiles is attempting to render a page before it's properly initialized via the struts2-tiles-plugin.

Has anyone seen this before and able to suggest a way to make it go away? There's no obvious consequences other than exceptions in the log, but it's still annoying.

Below are examples of the other exceptions seen in association with the one above. I presume they are all caused by the definitions not being read yet and/or failing to render part of page due to that (although I can't find a rationale explanation for the first one).

Thanks,
Jeromy Evans

2008-12-17 10:27:55,617 ERROR [http-8080-Processor24] [Digester] End event threw exception java.lang.NoSuchMethodException: No such accessible method: addDefinition() on object: org.apache.tiles.Definition at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java: 214)
---     

2008-12-17 11:05:50,675 ERROR [http-8080-Processor24] [DefinitionsImpl] Error while resolving definition inheritance: child 'admin.page.head' can't find its ancestor 'page.head'. Please check your description file.

---
2008-12-17 11:10:12,545 ERROR [http-8080-Processor25] [RenderTagSupport] Error during rendering
java.util.EmptyStackException
        at org.apache.commons.collections.ArrayStack.pop(ArrayStack.java:127)
        at org.apache.commons.digester.Digester.endElement(Digester.java:1208)

Reply via email to