6 Replies Latest reply on Feb 27, 2012 7:48 AM by lfryc

    Using RF4 as a JBoss 7 module

    mpgong

      Hello,

       

      I trying to use RF4 as a module instead of including the jars that maven pulls in, so that i can simplify and reduce the size of my war.  I am able to create the module and put in the dependency in my war but when i run i get the following exception.

       

       

      javax.el.ELException: Function 'rich:component' not found
       org.apache.el.lang.ExpressionBuilder.visit(ExpressionBuilder.java:210)
       org.apache.el.parser.SimpleNode.accept(SimpleNode.java:150)
       org.apache.el.lang.ExpressionBuilder.prepare(ExpressionBuilder.java:168)
       org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:186)
       org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:229)
       org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:68)
       com.sun.faces.facelets.el.ELText$ELTextVariable.apply(ELText.java:201)
       com.sun.faces.facelets.el.ELText$ELTextComposite.apply(ELText.java:182)
       com.sun.faces.facelets.compiler.AttributeInstruction.apply(AttributeInstruction.java:101)
       com.sun.faces.facelets.compiler.UIInstructionHandler.apply(UIInstructionHandler.java:141)
       javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
       javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
       com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184)
       javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
       javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
       com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:166)
       com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
       com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
       com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308)
       com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367)
       com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346)
       com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
       com.sun.faces.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:120)
       javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
       com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184)
       javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
       javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
       com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184)
       javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
       javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
       com.sun.faces.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:164)
       javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
       com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
       javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
       com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
       com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152)
       com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:769)
       com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
       com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
       com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
       javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
      

       

      Not sure what i've configured incorrectly but does anyone know how i can go about doing this.  Should i also include the jars the richfaces uses like guava,sac, etc...

       

      Thanks

        • 1. Re: Using RF4 as a JBoss 7 module
          grubi

          Same problem here.

           

          What I noticed during my tests:

          You habe to copy the faces-config.xml from the Richfaces jars to your war file and register them in your own faces-config.xml. Otherwise they won't be loaded / parsed. After that I also had to move the taglibs to my war.

          Result: I finally got some NPE from Richfaces and still nothing is working. That happens to all Libraries for JSF (Richfaces, Tomahawk, ...). Am I right when I say, that it is impossible to add such libraries as a module to JBoss?

           

          Everything works fine when I add those libraries to the lib directory in the war...

          • 2. Re: Using RF4 as a JBoss 7 module
            rhanus

            I guess you should follow the servlet specification

            RichFaces4 taglibs are expected to be located in WEB-INF/lib/richfaces-components-ui-4.x.y.Final.jar whereas javascript sources and core configs in WEB-INF/lib/richfaces-core-impl-4.x.y.Final.jar

            moving these libs or only theirs parts leads to various exceptions

            • 3. Re: Using RF4 as a JBoss 7 module
              grubi

              OK. To summarize it: Richfaces can only be deployed together with the application / war-File?

              • 4. Re: Using RF4 as a JBoss 7 module
                lfryc

                Hi guys,

                 

                I admit I don't know if RichFaces can be loaded as module, I haven't tried.

                I also don't know about Servlet Spec saying taglibs expected to be located in WEB-INF/lib as Radim pointed out.

                 

                However since JSF RI (Mojarra) itself is JBoss AS 7 module, I assume there won't be problem with preparing module from RichFaces too.

                 

                Why? RF contains taglibs same as JSF RI module do.

                 

                But you can surely get more founded answers on JBoss AS 7 / JBoss AS JSF forums!

                (Please, send the link here if you will start discussions there)

                • 5. Re: Using RF4 as a JBoss 7 module
                  grubi

                  Topic created on JBoss AS 7 forum.

                  Link: https://community.jboss.org/thread/194795

                  • 6. Re: Using RF4 as a JBoss 7 module
                    lfryc

                    Hi guys,

                     

                    just for reference, here is the feature request for distributing RichFaces 4 with AS7 module, please vote there or comment if you would like to grab that issue and implement it:

                     

                    https://issues.jboss.org/browse/RF-12008

                     

                    Thanks,

                     

                    ~ Lukas