You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Christian Köberl (JIRA)" <ji...@apache.org> on 2009/06/16 08:53:07 UTC

[jira] Reopened: (TAP5-745) Remove Woodstox-specific Stax implementation usage

     [ https://issues.apache.org/jira/browse/TAP5-745?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christian Köberl reopened TAP5-745:
-----------------------------------


No, this is not the same problem as TAP5-713!!

The problem with TAP5-713 is that there is no StAX available (e.g. on GAE) - the problem here is that Tapestry uses extensions to StAX (which it should not do). Using extensions to XML standard implementations in Java brings us back to XML hell some years ago where you had to exactly use XML parser X in version Z to make some app work.

The patch provided will fix this problem (eliminating the dependency to Woodstox but not to StAX)! The patch can be easily applied (just some lines of code are changed) - a fix for  TAP5-713 will need a major rewrite of the template parser!

> Remove Woodstox-specific Stax implementation usage
> --------------------------------------------------
>
>                 Key: TAP5-745
>                 URL: https://issues.apache.org/jira/browse/TAP5-745
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.1.0.0, 5.1.0.1, 5.1.0.2, 5.1.0.3, 5.1.0.4, 5.1.0.5, 5.1
>            Reporter: Christian Köberl
>            Priority: Critical
>         Attachments: TAP5-745-5.1.0.5.patch
>
>
> Tapestry uses some special extensions to StaX (out of Woodstox) in the template parser. This leads to the problem that Tapestry will usually not run on any application server because the appservers will use their own implementation of Stax.
> There is a workaround but a main stream web application framework should run on JEE compatible web and application servers without tweaking.
> The main problem is in org.apache.tapestry5.internal.services.TemplateParserImpl.<init>(TemplateParserImpl.java:44). Here, XMLInputFactory2 is asked for an instance - but XMLInputFactory2 does not implement the method newInstance. This is delegated to XMLInputFactory. So, the original XMLInputFactory is used - which returns the platform implementation of Stax.
> Workaround:
> Add the system property below to Application Server (either via startup script or admin console):
> -Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.