JBoss EAP6 does not load the tlds from the Jars META-INF directory which are present in custom modules

Solution Unverified - Updated -

Issue

  • It is observed that the EAP6 does not load the TLD files which are present inside the META-INF directory of a JAR file which is present inside a custom JBoss module even if the meta-inf="export" attribute is used inside the "jboss-deployment-structure.xml" file.

Example: The "WEB-INF/jboss-deployment-structure.xml" is used as following:

<jboss-deployment-structure  xmlns="urn:jboss:deployment-structure:1.2">
          <deployment>
               <dependencies>
                      <module name="apache.struts" slot="main" meta-inf="export"/>
                </dependencies>
          </deployment>
</jboss-deployment-structure>
  • The custom struts module has the following entry inside the "module.xml" file:
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="apache.struts" slot="main">
    <resources>
        <resource-root path="antlr-2.7.2.jar" />
        <resource-root path="aopalliance-1.0.jar" />
        <resource-root path="asm-3.3.jar" />
        <resource-root path="asm-commons-3.3.jar" />
        <resource-root path="asm-tree-3.3.jar" />
        <resource-root path="classworlds-1.1.jar" />
        <resource-root path="commons-beanutils-1.8.0.jar" />
        <resource-root path="commons-chain-1.2.jar" />
        <resource-root path="commons-collections-3.1.jar" />
        <resource-root path="commons-digester-2.0.jar" />
        <resource-root path="commons-fileupload-1.2.2.jar" />
        <resource-root path="commons-io-2.0.1.jar" />
        <resource-root path="commons-lang-2.4.jar" />
        <resource-root path="commons-lang3-3.1.jar" />
        <resource-root path="commons-logging-1.1.1.jar" />
        <resource-root path="commons-logging-api-1.1.jar" />
        <resource-root path="commons-validator-1.3.1.jar" />
        <resource-root path="dwr-1.1.1.jar" />
        <resource-root path="ezmorph-1.0.6.jar" />
        <resource-root path="freemarker-2.3.19.jar" />
        <resource-root path="google-collections-1.0.jar" />
        <resource-root path="google-gxp-0.2.4-beta.jar" />
        <resource-root path="jackson-core-asl-1.9.2.jar" />
        <resource-root path="jackson-mapper-asl-1.9.2.jar" />
        <resource-root path="javassist-3.11.0.GA.jar" />
        <resource-root path="json-lib-2.3-jdk15.jar" />
        <resource-root path="juli-6.0.18.jar" />
        <resource-root path="ognl-3.0.5.jar" />
        <resource-root path="org.apache.felix.bundlerepository-1.2.1.jar" />
        <resource-root path="org.apache.felix.framework-1.4.1.jar" />
        <resource-root path="org.apache.felix.main-1.4.1.jar" />
        <resource-root path="org.apache.felix.shell-1.0.2.jar" />
        <resource-root path="org.apache.felix.shell.tui-1.0.2.jar" />
        <resource-root path="oro-2.0.8.jar" />
        <resource-root path="oval-1.31.jar" />
        <resource-root path="plexus-container-default-1.0-alpha-10.jar" />
        <resource-root path="plexus-utils-1.2.jar" />
        <resource-root path="sitemesh-2.4.2.jar" />
        <resource-root path="spring-aop-3.0.5.RELEASE.jar" />
        <resource-root path="spring-asm-3.0.5.RELEASE.jar" />
        <resource-root path="spring-beans-3.0.5.RELEASE.jar" />
        <resource-root path="spring-context-3.0.5.RELEASE.jar" />
        <resource-root path="spring-core-3.0.5.RELEASE.jar" />
        <resource-root path="spring-expression-3.0.5.RELEASE.jar" />
        <resource-root path="spring-test-3.0.5.RELEASE.jar" />
        <resource-root path="spring-web-3.0.5.RELEASE.jar" />
        <resource-root path="struts2-struts1-plugin-2.3.3.jar" />
        <resource-root path="struts2-tiles-plugin-2.3.3.jar" />
        <resource-root path="struts-core-1.3.10.jar" />
        <resource-root path="struts2-jasperreports-plugin-2.3.3.jar" />
        <resource-root path="struts2-javatemplates-plugin-2.3.3.jar" />
        <resource-root path="struts2-jfreechart-plugin-2.3.3.jar" />
        <resource-root path="struts2-oval-plugin-2.3.3.jar" />
        <resource-root path="tiles-api-2.0.6.jar" />
        <resource-root path="tiles-core-2.0.6.jar" />
        <resource-root path="tiles-jsp-2.0.6.jar" />
        <resource-root path="velocity-1.6.3.jar" />
        <resource-root path="xmlpull-1.1.3.1.jar" />
        <resource-root path="xpp3_min-1.1.4c.jar" />
        <resource-root path="xstream-1.4.2.jar" />
        <resource-root path="xwork-core-2.3.3.jar" />

          <resource-root path="struts2-core-2.3.3.jar" >         <!-- this jar has META-INF/struts-tags.tld -->
            <filter>
                <include path="META-INF/**" />
            </filter>
          </resource-root>
    </resources>

    <dependencies>
        <module name="javax.servlet.api"/>     
        <module name="javax.servlet.jsp.api"/>    
        <module name="org.apache.log4j" />
        <module name="javax.api"/>
    </dependencies>
</module>
  • The following exception is encountered while running the struts application which internally tries to load and scan the "struts-tags" library:
12:45:04,596 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/SimpleTest].[jsp]] (http-/127.0.0.1:8080-1) JBWEB000236: Servlet.service() for servlet jsp threw exception: org.apache.jasper.JasperException: JBWEB004036: File "/struts-tags" not found
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:53) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:147) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:147) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:385) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:446) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1372) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.Parser.parse(Parser.java:132) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:256) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:105) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:194) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:359) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:339) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:326) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:606) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:308) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:309) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:242) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:832) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:620) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:553) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:482) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:164) [struts2-core-2.3.3.jar:2.3.3]
    at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) [struts2-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:374) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278) [xwork-core-2.3.3.jar:2.3.3]
    at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) [struts2-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) [xwork-core-2.3.3.jar:2.3.3]
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) [struts2-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) [struts2-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) [struts2-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) [struts2-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) [struts2-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) [xwork-core-2.3.3.jar:2.3.3]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.3.jar:2.3.3]
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) [struts2-core-2.3.3.jar:2.3.3]
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510) [struts2-core-2.3.3.jar:2.3.3]
    at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:432) [struts2-core-2.3.3.jar:2.3.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]

Environment

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

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.