14 Replies Latest reply on Nov 15, 2008 10:36 PM by chris.simons

    Seam + custom UI composition, EL; problem with AbstractTagLibrary

      Hi All,


      I am attempting to following the great Seam examples for Custom EL and Custom UI Compositions.  I see a lot of value in adding this capability to our application to reduce clutter and use fewer facelets by way of ui:include.


      However, upon deployment and hitting the first page (login screen) of the application I receive the following stack trace error(s):


      10:39:11,916 ERROR [ExceptionFilter] handling uncaught exception
      javax.servlet.ServletException: Servlet execution threw an exception
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:313)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:307)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
              at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
              at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
              at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
              at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
              at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
              at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
              at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
              at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
              at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
              at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
              at java.lang.Thread.run(Thread.java:595)
      Caused by: java.lang.NoClassDefFoundError: com/sun/facelets/tag/AbstractTagLibrary
              at java.lang.ClassLoader.defineClass1(Native Method)
              at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
              at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
              at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
              at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
              at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
              at java.security.AccessController.doPrivileged(Native Method)
              at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
              at org.jboss.mx.loading.RepositoryClassLoader.findClassLocally(RepositoryClassLoader.java:682)
              at org.jboss.mx.loading.RepositoryClassLoader.findClass(RepositoryClassLoader.java:662)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
              at org.jboss.mx.loading.RepositoryClassLoader.loadClassLocally(RepositoryClassLoader.java:200)
              at org.jboss.mx.loading.ClassLoadingTask$ThreadTask.run(ClassLoadingTask.java:131)
              at org.jboss.mx.loading.LoadMgr3.nextTask(LoadMgr3.java:399)
              at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:527)
              at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:415)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
              at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:579)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
              at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1345)
              at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
              at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
              at java.lang.Class.forName0(Native Method)
              at java.lang.Class.forName(Class.java:242)
              at com.sun.facelets.util.ReflectionUtil.forName(ReflectionUtil.java:36)
              at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.createClass(TagLibraryConfig.java:291)
              at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.processLibraryClass(TagLibraryConfig.java:339)
              at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.endElement(TagLibraryConfig.java:171)
              at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
              at org.apache.xerces.impl.dtd.XMLDTDValidator.endNamespaceScope(Unknown Source)
              at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
              at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
              at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
              at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
              at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
              at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
              at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
              at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
              at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
              at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
              at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
              at javax.xml.parsers.SAXParser.parse(SAXParser.java:176)
              at com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:407)
              at com.sun.facelets.FaceletViewHandler.initializeCompiler(FaceletViewHandler.java:274)
              at com.sun.facelets.FaceletViewHandler.initialize(FaceletViewHandler.java:161)
              at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:537)
              at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
              at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
              at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
              at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
              at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
              at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
              ... 40 more




      Does anyone have some insight into this?  Seems like it can't find AbstractTagLibrary, which is inherited by FnLibrary.  Thanks for your time.



      Documentation reference:
      My Link
      My Link

        • 1. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary
          blabno

          Put jsf-facelets.jar in your EAR.

          • 2. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary
            sjmenden

            Thanks for that catch Bernard, I'll look into updating the articles with information for getting this working in an EAR, as I did all my examples with WARs.

            • 3. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary
              blabno

              You can have jsf-facelets.jar in your web.war/WEB-INF/lib too. But it must be in archive.

              • 4. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary

                Bernard,


                Thanks for the reply.  I'm still having some issues.  First, I placed a second copy of jsf-facelets here:
                \jboss-4.2.2.GA\server\default\deploy\csimons.ear


                I restarted JBoss and experienced the same error.


                Next, I put jsf-facelets here and restarted:
                \jboss-4.2.2.GA\server\default\lib


                This seemed to work as I'm now getting a different set of errors.  Would you mind taking a look?  I have followed the examples to a T.  But it looks like JBoss doesn't like the <library-class> usage in elfunctions.taglib.xml.  I hope it's in the right folder.  Here is the full stack trace:


                12:07:49,470 ERROR [STDERR] Aug 21, 2008 12:07:49 PM com.sun.facelets.FaceletViewHandler initializeCompiler
                SEVERE: Error Loading Library: /META-INF/elfunctions.taglib.xml
                java.io.IOException: Error parsing [jndi:/localhost/csimons/META-INF/elfunctions.taglib.xml]:
                        at com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:410)
                        at com.sun.facelets.FaceletViewHandler.initializeCompiler(FaceletViewHandler.java:274)
                        at com.sun.facelets.FaceletViewHandler.initialize(FaceletViewHandler.java:161)
                        at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:537)
                        at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
                        at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
                        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
                        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
                        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
                        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                        at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                        at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:307)
                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
                        at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
                        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                        at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
                        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                        at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
                        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                        at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
                        at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
                        at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
                        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                        at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
                        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                        at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
                        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
                        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
                        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
                        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
                        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
                        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
                        at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
                        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
                        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
                        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
                        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
                        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
                        at java.lang.Thread.run(Thread.java:595)
                Caused by: org.xml.sax.SAXException: Error Handling [jndi:/localhost/csimons/META-INF/elfunctions.taglib.xml@4,55] <libr
                        at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.endElement(TagLibraryConfig.java:271)
                        at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
                        at org.apache.xerces.impl.dtd.XMLDTDValidator.endNamespaceScope(Unknown Source)
                        at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
                        at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
                        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
                        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
                        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
                        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
                        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
                        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
                        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
                        at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
                        at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
                        at javax.xml.parsers.SAXParser.parse(SAXParser.java:176)
                        at com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:407)
                        ... 50 more
                Caused by: java.lang.Exception: org.el.func.FnLibrary must be an instance of com.sun.facelets.tag.TagLibrary
                        at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.createClass(TagLibraryConfig.java:293)
                        at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.processLibraryClass(TagLibraryConfig.java:339)
                        at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.endElement(TagLibraryConfig.java:171)
                        ... 65 more
                12:07:51,939 ERROR [STDERR] Aug 21, 2008 12:07:51 PM com.sun.facelets.compiler.TagLibraryConfig loadImplicit


                • 5. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary
                  blabno

                  Problem is in classloaders (wrong location of jsf-facelets.jar or it's multiple locations). Send me your ear or war if you do not have ear and I will examine it. s4237 at pjwstk dot edu dot pl

                  • 6. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary
                    sjmenden

                    I just did a quick test following the article with base JBDS EAR project and all works fine.  I suspect it is a problem with your structure/env.  Remove all jsf-facelets.jar from everywhere except WEB-INF/lib/jsf-facelets.jar. 


                    Without seeing your full ear structure it is hard to surmise, however, I did my testing with Seam 2.0.2.SP1/2.0.3.CR1, but I wouldn't expect there to be a problem with 2.0.1.GA or lower, let me know which version of Seam you are running on and I'll test it out.


                    Is this a seam-gen project?  How much have you modified since it's creation?

                    • 7. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary

                      Samuel,


                      Thanks for the reply.  I also emailed Bernard as requested but I'm unable to send our EAR/WAR around as its proprietary.


                      We're using Seam 2.0 GA but considering upgrading soon.  The project was built using seam-gen but this was using seam-gen that came bundled with Seam 1.2GA.  The application has grown quite large and has been modified often but the extend of our .ear/.war folder layout has changed little, if at all.  At the end of this email I break out the EAR structure...


                      I have to let you know that the only jsf-facelets anywhere in our JBoss server directory was /WEB-INF/lib prior to adding it to some other directories to see if it would catch.  In fact, it did catch once I added it to my ./ear root directory, but then received a number of errors as I described above.


                      So you recommend I should remove it everywhere again and report back?  I will do just that...


                      EAR structure (project):


                      /view
                       + /view/WEB-INF
                       + /view/META-INF/elfunctions.tablig.xml
                      /src
                      /resources
                      /lib (this is where jsf-facelets.jar is located)




                      Deployment structure:


                      /csimons.ear
                      + /csimons.war
                       + /WEB-INF
                         + /lib (this is where jsf-facelets.jar is located)
                      + /csimons.jar
                      + /META-INF





                      Thanks!

                      • 8. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary

                        Sam and Bernard,


                        When I go back to only having one jsf-facelets.jar, located at
                        C:\jboss-4.2.2.GA\server\default\deploy\csimons.ear\csimons.war\WEB-INF\lib


                        I get this stack trace as soon as I hit the login page:


                        14:06:40,719 ERROR [ExceptionFilter] handling uncaught exception
                        javax.servlet.ServletException: Servlet execution threw an exception
                                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:313)
                                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                                at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
                                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                                at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:307)
                                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                                at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
                                at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
                                at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                                at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
                                at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                                at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
                                at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                                at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
                                at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
                                at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
                                at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                                at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
                                at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                                at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
                                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                                at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
                                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                                at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
                                at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
                                at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
                                at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
                                at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
                                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
                                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
                                at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
                                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
                                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
                                at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
                                at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
                                at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
                                at java.lang.Thread.run(Thread.java:595)
                        *Caused by: java.lang.NoClassDefFoundError: com/sun/facelets/tag/AbstractTagLibrary*
                                at java.lang.ClassLoader.defineClass1(Native Method)
                                at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
                                at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
                                at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
                                at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
                                at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
                                at java.security.AccessController.doPrivileged(Native Method)
                                at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
                                at org.jboss.mx.loading.RepositoryClassLoader.findClassLocally(RepositoryClassLoader.java:682)
                                at org.jboss.mx.loading.RepositoryClassLoader.findClass(RepositoryClassLoader.java:662)
                                at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
                                at org.jboss.mx.loading.RepositoryClassLoader.loadClassLocally(RepositoryClassLoader.java:200)
                                at org.jboss.mx.loading.ClassLoadingTask$ThreadTask.run(ClassLoadingTask.java:131)
                                at org.jboss.mx.loading.LoadMgr3.nextTask(LoadMgr3.java:399)
                                at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:527)
                                at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:415)
                                at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
                                at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:579)
                                at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
                                at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1345)
                                at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
                                at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
                                at java.lang.Class.forName0(Native Method)
                                at java.lang.Class.forName(Class.java:242)
                                at com.sun.facelets.util.ReflectionUtil.forName(ReflectionUtil.java:36)
                                at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.createClass(TagLibraryConfig.java:291)
                                at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.processLibraryClass(TagLibraryConfig.java:339)
                                at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.endElement(TagLibraryConfig.java:171)
                                at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
                                at org.apache.xerces.impl.dtd.XMLDTDValidator.endNamespaceScope(Unknown Source)
                                at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
                                at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
                                at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
                                at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
                                at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
                                at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
                                at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
                                at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
                                at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
                                at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
                                at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
                                at javax.xml.parsers.SAXParser.parse(SAXParser.java:176)
                                at com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:407)
                                at com.sun.facelets.FaceletViewHandler.initializeCompiler(FaceletViewHandler.java:274)
                                at com.sun.facelets.FaceletViewHandler.initialize(FaceletViewHandler.java:161)
                                at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:537)
                                at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
                                at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
                                at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
                                at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
                                at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
                                at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
                                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
                                ... 40 more
                        14:06:41,204 ERROR [ExceptionFilter] exception root cause


                        • 9. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary
                          sjmenden

                          I'll have some time in the coming days to test this configuration out, ie. Seam 2.0.0.GA.  In the meantime, can you provide a 'tree' output of your deployed EAR.  If you are on linux just 'tree JBOSS_HOME/server/default/deploy/myear.ear/ > treeoutput.txt' then copy that text into a comment.  This is where JBOSS_HOME is the location of your JBoss.


                          • 10. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary

                            Samuel,


                            Thanks for your support.  I am getting JBoss debug pages when I try to post the output from 'tree'.  Would you mind if I emailed it to you?


                            Thanks.

                            • 11. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary
                              sjmenden

                              sure thing, my email

                              • 12. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary

                                Hi Sam,


                                I believe I sent you my tree a while back; did you have a chance to test out Seam 2.0GA and the Custom EL functions described above?  I've tried to make do without this feature but I'm realizing that I might actually need it to do what I want...


                                I can confirm that jsf-facelets is in my project.war/web-inf/lib directory and only in this directory.



                                Thanks.

                                • 13. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary
                                  sjmenden

                                  I'm glad you updated this thread, I had misplaced your email, but now that you updated this, I found it again via your name.


                                  The tree you send me didn't contain any files in it.  But, I think a more generic approach is necessary in this situation.  IIRC I ran into the exception CNF on AbstractTagLibrary at one point a year ago with older versions and Custom EL/Facelets.  There were two solutions, 1) UseJBossWebLoader 2) Upgrade to the latest versions. 


                                  You can test out 1) but I don't really like it as a solution.  The best solution is going to be to seam-gen a new project with Seam 2.0.2.SP1 and follow my article, get it working, then use that as a template for your existing code.  And if your existing ear structure matches the seam-gen perfectly, then there is a jar problem somewhere an you'll most likely need to plan on upgrading.


                                  I've seen quite a few problems moving from a 1.2.1 project to Seam 2 in terms of configuration/structure/jars, so, I suspect that might be part of the problem also.

                                  • 14. Re: Seam + custom UI composition, EL; problem with AbstractTagLibrary

                                    Just to update this thread...I have upgraded to Seam 2.1.SP1 recently and attempted to complete the example once again.  It continues to fail with a NoClassDefFound for AbstractTagLibrary.  Not sure where to go from here...jsf-facelets is where it is supposed to be.


                                    Any suggestions?