myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dennis Kieselhorst (JIRA)" <...@myfaces.apache.org>
Subject [jira] [Commented] (MYFACES-4002) Regression? - References to external entities not working with WebXmlParser
Date Fri, 21 Aug 2015 08:46:45 GMT

    [ https://issues.apache.org/jira/browse/MYFACES-4002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14706420#comment-14706420
] 

Dennis Kieselhorst commented on MYFACES-4002:
---------------------------------------------

Could you please attach an example of a web.xml with this !ENTITY reference?

Btw servlet API 3.0 supports web-fragment. Which version are you using? 

> Regression? - References to external entities not working with WebXmlParser
> ---------------------------------------------------------------------------
>
>                 Key: MYFACES-4002
>                 URL: https://issues.apache.org/jira/browse/MYFACES-4002
>             Project: MyFaces Core
>          Issue Type: Bug
>    Affects Versions: 2.2.4
>         Environment: Myfaces 2.2.4, Tomcat 8.0.23, JDK 1.8_20, Windows 7 64bit
>            Reporter: Thomas Timbul
>         Attachments: patch1.txt
>
>
> I've searched JIRA and there are a few issues related to WebXmlParser, but this seems
almost like a recurrence of MYFACES-1754.
> My web.xml is split into multiple files, each declared as an XML entity relative to the
web.xml file itself:
> {code:xml}
> <!ENTITY contextparams	SYSTEM	"webxml/context-params.xml">
> {code}
> (As a side note I used to use {{jndi:/localhost/WEB-INF/webxml/context-params.xml}},
but for some reason Tomcat 8 claims that jndi is an invalid protocol).
> Using resource relative system identifiers Tomcat is now happy and the context starts
correctly. However, during its initialization MyFaces re-parses the web.xml descriptor and
resolves the entities incorrectly, leading to failure with the message:
> {code}
> 2015-06-17 15:48:13.853 [localhost-startStop-1] ERROR o.a.m.s.w.webxml.WebXmlParser -
Unable to parse web.xml
> java.lang.IllegalArgumentException: The resource path [file:///WEB-INF/webxml/context-params.xml]
is not valid
> {code}
> The solution is to remove the file:// prefix before passing to the external context to
resolve, as in this patch:
> {code}
> Index: org/apache/myfaces/shared_impl/webapp/webxml/WebXmlParser.java
> ===================================================================
> --- WebXmlParser.java	(revision ???)
> +++ WebXmlParser.java	(working copy)
> @@ -138,6 +138,9 @@
>  
>      private InputSource createContextInputSource(String publicId, String systemId)
>      {
> +        if(systemId.startsWith("file:")) {
> +            systemId = systemId.substring(7); // remove file://
> +        }
>          InputStream inStream = _context.getResourceAsStream(systemId);
>          if (inStream == null)
>          {
> {code}
> Those three lines of code are based on other work by the MyFaces team (org.apache.myfaces.config.impl.FacesConfigEntityResolver)
and even if it weren't is made available free of charge and free from license restrictions.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message