14 Replies Latest reply on Jan 30, 2011 2:30 PM by mischu

    seam-faces does not run on GlassFish

    nbhatia.bhatian.comcast.net

      I have a minimal JSF application (a simple login form) that does not use Seam. To start using Seam I simply added the following maven dependency as recommended here (no changes to code):


      <dependency>
         <groupId>org.jboss.seam.faces</groupId>
         <artifactId>seam-faces</artifactId>
         <version>3.0.0.Alpha3</version>
      </dependency>
      



      Now when I deploy this application to GlassFish, it gives me the following exception:



      com.sun.enterprise.admin.cli.CommandException: remote failure: Exception while loading the app : java.lang.RuntimeException: Unable to load EJB module.
      DeploymentContext does not contain any EJB  Check archive to ensure correct packaging for C:/apps/glassfish-3.0.1/glassfish/domains/domain1/applications/minimal-jsf

      Can somebody help me solve this issue?


      (Note: JBoss 6 has no problems with this)

        • 1. Re: seam-faces does not run on GlassFish
          nbhatia.bhatian.comcast.net

          Anyone? Should I post my example or file a JIRA bug?

          • 2. Re: seam-faces does not run on GlassFish
            nickarls

            You should probably file a GF-JIRA. Although it's always possible that they are more correct since I think the JBoss deployment structure is still more flattened than is's supposed to be.

            • 3. Re: seam-faces does not run on GlassFish
              nbhatia.bhatian.comcast.net

              Well, I am hoping that the committers are trying to keep this implementation as portable as possible. Since this seems to be a very fundamental portability issue, I am offering to help by supplying an example.

              • 4. Re: seam-faces does not run on GlassFish
                fabriciolemos

                Which version of Glassfish are you using? I deploy an application with seam-faces 3.0.0.Alpha3 to Glassfish 3.0.0 and 3.0.1 without any problems.


                Is your application a WAR or EAR?

                • 5. Re: seam-faces does not run on GlassFish
                  nbhatia.bhatian.comcast.net

                  seam-faces 3.0.0.Alpha3 and glassfish-3.0.1. My application is a WAR. Would you mind trying out my small maven project - it is available here?

                  • 6. Re: seam-faces does not run on GlassFish
                    fabriciolemos

                    Naresh, I tried your app and had the same error. To fix it you should add slf4j to the classpath.


                    Just add




                            <dependency>
                                <groupId>org.slf4j</groupId>
                                <artifactId>slf4j-log4j12</artifactId>
                                <version>1.5.9.RC1</version>
                            </dependency>



                    to you pom.xml and you´ll be ok.

                    • 7. Re: seam-faces does not run on GlassFish
                      nbhatia.bhatian.comcast.net

                      Fabricio, that was it! Thanks so much. Just out of curiosity, how did you find this problem?

                      • 8. Re: seam-faces does not run on GlassFish
                        fabriciolemos
                        Glassfish exception "DeploymentContext does not contain any EJB" is misleading, but then I saw on log:

                        SEVERE|glassfish3.0.1|global|_ThreadID=20;_ThreadName=Thread-1;|Class [ Lorg/slf4j/Logger; ] not found. Error while loading [ class org.jboss.seam.faces.context.conversation.ConversationBoundaryInterceptor ]|#]

                        WARNING|glassfish3.0.1|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=20;_ThreadName=Thread-1;|Error in annotation processing: java.lang.NoClassDefFoundError: Lorg/slf4j/Logger;|#]

                        SEVERE|glassfish3.0.1|global|_ThreadID=20;_ThreadName=Thread-1;|Class [ Lorg/slf4j/Logger; ] not found. Error while loading [ class org.jboss.seam.faces.context.conversation.ConversationBoundaryInterceptor ]|#]

                        WARNING|glassfish3.0.1|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=20;_ThreadName=Thread-1;|Error in annotation processing: java.lang.NoClassDefFoundError: Lorg/slf4j/Logger;|#]

                        SEVERE|glassfish3.0.1|global|_ThreadID=20;_ThreadName=Thread-1;|Class [ Lorg/slf4j/Logger; ] not found. Error while loading [ class org.jboss.seam.international.locale.AvailableLocales ]|#]

                        WARNING|glassfish3.0.1|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=20;_ThreadName=Thread-1;|Error in annotation processing: java.lang.NoClassDefFoundError: Lorg/slf4j/Logger;|

                        • 9. Re: seam-faces does not run on GlassFish
                          nbhatia.bhatian.comcast.net

                          That's great! Thanks for the tip.

                          • 10. Re: seam-faces does not run on GlassFish
                            slominskir

                            I had the same problem, but the solution mentioned above only lead me to another problem:  Now I get the following error:




                            SEVERE: org/jboss/weld/extensions/beanManager/BeanManagerProvider
                            java.lang.NoClassDefFoundError: org/jboss/weld/extensions/beanManager/BeanManagerProvider
                                    at java.lang.ClassLoader.defineClass1(Native Method)
                                    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
                                    at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
                                    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
                                    at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:920)



                            So I figured this meant I needed to add the weld extension jar.  So I did.  And then it complained about the log4j jar.  So I added that.  Now it is complaining about the jboss logger:




                            Caused by: org.jboss.weld.exceptions.DefinitionException: Exception #0 :java.lang.NoClassDefFoundError: org/jboss/logging/Logger
                                    at org.jboss.weld.bootstrap.events.AbstractDefinitionContainerEvent.fire(AbstractDefinitionContainerEvent.java:55)
                                    at org.jboss.weld.bootstrap.events.BeforeBeanDiscoveryImpl.fire(BeforeBeanDiscoveryImpl.java:66)



                            This is logger dependency hell.  I searched google for the JBoss Common Client jar (from java2.com) and now GlassFish gives the following:




                            Caused by: org.jboss.weld.exceptions.DefinitionException: Exception #0 :null
                                    at org.jboss.weld.bootstrap.events.AbstractDefinitionContainerEvent.fire(AbstractDefinitionContainerEvent.java:45)
                                    at org.jboss.weld.bootstrap.events.ProcessAnnotatedTypeImpl.fire(ProcessAnnotatedTypeImpl.java:44)





                            • 11. Re: seam-faces does not run on GlassFish
                              fabriciolemos

                              Are you using Maven? Weld extension is imported, transitively, when you add seam-faces. Log4j is imported with slf4j. And about jboss logger, I do not have it in my classpath.

                              • 12. Re: seam-faces does not run on GlassFish
                                slominskir

                                I'm not using Maven and I don't really want to switch my project over to maven just to try out this Alpha library.  I went to the download page here: http://seamframework.org/Seam3/Downloads.  Unfortunately Seam Faces doesn't have a distribution with dependencies so I just downloaded the two jars (api and impl) available from the linked page and added them to my project.  However, the jars by themselves are not enough.


                                Any idea what library I'm supposed to obtain to resolve the NoClassDefFoundError: org/jboss/logging/Logger?

                                • 13. Re: seam-faces does not run on GlassFish
                                  sebastianovide

                                  I am having the same problem.


                                  I've started with the jboss-javaee6-webapp archetype (which contains the org.slf4j dependencies ) and simply added


                                        <dependency>
                                              <groupId>org.jboss.seam.faces</groupId>
                                              <artifactId>seam-faces</artifactId>
                                              <version>3.0.0.Beta1</version>
                                        </dependency



                                  this is what I get


                                  SEVERE: Class [ Lorg/jboss/logging/Logger; ] not found. Error while loading [ class org.jboss.seam.international.timezone.DefaultTimeZoneProducer ]
                                  WARNING: Error in annotation processing: java.lang.NoClassDefFoundError: Lorg/jboss/logging/Logger;
                                  SEVERE: Class [ Lorg/jboss/logging/Logger; ] not found. Error while loading [ class org.jboss.seam.faces.context.conversation.ConversationBoundaryInterceptor ]
                                  WARNING: Error in annotation processing: java.lang.NoClassDefFoundError: Lorg/jboss/logging/Logger;
                                  SEVERE: Class [ Lorg/jboss/logging/Logger; ] not found. Error while loading [ class org.jboss.seam.international.timezone.DefaultTimeZoneProducer ]
                                  WARNING: Error in annotation processing: java.lang.NoClassDefFoundError: Lorg/jboss/logging/Logger;
                                  SEVERE: Exception while invoking class org.glassfish.ejb.startup.EjbDeployer load method
                                  java.lang.RuntimeException: Unable to load EJB module.  DeploymentContext does not contain any EJB  Check archive to ensure correct packaging for C:\Documents and Settings\sebastian ovide\My Documents\NetBeansProjects\mavenproject1\mavenproject3\target\mavenproject3
                                          at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:133)>



                                  any ideas ?

                                  • 14. Re: seam-faces does not run on GlassFish
                                    mischu

                                    I had the same error and fix that with the following dependency :



                                    <dependency>
                                        <groupId>org.jboss.logging</groupId>
                                        <artifactId>jboss-logging-logmanager</artifactId>
                                        <version>2.2.0.CR2</version>
                                    </dependency>



                                    But after this i got the a NoClassDefFoundError


                                    [#|2011-01-30T20:09:48.286+0100|WARNING|glassfish3.0.1|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=25;_ThreadName=Thread-1;|Error in annotation processing: java.lang.NoClassDefFoundError: org/joda/time/DateTimeZone|#]




                                    With the further dependency it works well :


                                    <dependency>
                                        <groupId>joda-time</groupId>
                                        <artifactId>joda-time</artifactId>
                                        <version>1.6</version>
                                    </dependency>



                                    I hope this help maybe ...


                                    Greez