TLDs under META-INF/resources inside the web-fragment jar are not loaded in JBoss EAP 7.x

Solution Verified - Updated -

Issue

TLDs under META-INF/resources inside the web-fragment jar are not loaded in JBoss EAP 7.x.

  • An example directory structure of the web-fragment jar
taglib-jar
|-- META-INF
|   |-- resources
|   |   `-- WEB-INF
|   |       `-- tlds
|   |           `-- example.tld
|   `-- web-fragment.xml
`-- simple
    `-- ExampleTag.class
  • web-fragment.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-fragment id="WebFragment_ID"
    version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd">
    ...(snip)...

    <jsp-config>
        <taglib>
            <taglib-uri>/ExampleTag</taglib-uri>
            <taglib-location>/WEB-INF/tlds/example.tld</taglib-location>
        </taglib>
    </jsp-config>

</web-fragment>

The following ERROR is thrown at the deployment:

ERROR [org.wildfly.extension.undertow] (MSC service thread 1-8) WFLYUT0074: Could not find TLD /WEB-INF/tlds/example.tld

JSP returns "500 Internal Server Error" and Jastow throws the following ERROR when accessing the JSP which uses the taglib like <%@ taglib uri="/ExampleTag" prefix="say"%>:

ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /example.war/example.jsp: org.apache.jasper.JasperException: JBWEB004036: File "/ExampleTag" not found
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:57)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:278)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:75)
    at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:171)
    at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:412)
    at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:475)
    at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1459)
    at org.apache.jasper.compiler.Parser.parse(Parser.java:143)
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:223)
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:200)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:652)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:403)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:347)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    ...(snip)...

Environment

  • Red Hat JBoss Enterprise Application Platform (EAP)
    • 7.x

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content