3 Replies Latest reply on Nov 13, 2007 11:21 AM by pmuir

    Is facelets a MUST for a seam application?

    deepsix

      I have been mucking around with seam for a while now and i was using woodstock components to build a simple example app with a couple of jsp pages. I am not using facelets for now.. I find that if i dont include the facelet library, i get an exception while deploying the application.

      Does this mean that seam must mandatorily have facelets in its classpath even if i use it or not? I dont have any mapping for facelets in my web.xml or faces-config.xml

      Here is the exception that i get.

      Initializing Sun's JavaServer Faces implementation (1.2_04-b20-p03) for context '/WoodstockSeam'
      WebModule[/WoodstockSeam]PWC1275: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
      java.lang.NoClassDefFoundError: com/sun/facelets/compiler/Compiler
       at java.lang.Class.getDeclaredConstructors0(Native Method)
       at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)
       at java.lang.Class.getConstructor0(Class.java:2671)
       at java.lang.Class.newInstance0(Class.java:321)
       at java.lang.Class.newInstance(Class.java:303)
       at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:825)
       at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:486)
       at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:381)
       at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4515)
       at org.apache.catalina.core.StandardContext.start(StandardContext.java:5176)
       at com.sun.enterprise.web.WebModule.start(WebModule.java:327)
       at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:973)
       at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:957)
       at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:688)
       at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1581)
       at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1222)
       at com.sun.enterprise.web.WebContainer.loadJ2EEApplicationWebModules(WebContainer.java:1147)
       at com.sun.enterprise.server.TomcatApplicationLoader.doLoad(TomcatApplicationLoader.java:141)
       at com.sun.enterprise.server.AbstractLoader.load(AbstractLoader.java:244)
       at com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:336)
       at com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:210)
       at com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:645)
       at com.sun.enterprise.admin.event.AdminEventMulticaster.invokeApplicationDeployEventListener(AdminEventMulticaster.java:928)
       at com.sun.enterprise.admin.event.AdminEventMulticaster.handleApplicationDeployEvent(AdminEventMulticaster.java:912)
       at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:461)
       at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:176)
       at com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicastEvent(DeploymentNotificationHelper.java:308)
       at com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent(DeploymentServiceUtils.java:226)
       at com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEvent(ServerDeploymentTarget.java:298)
       at com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase(ApplicationStartPhase.java:132)
       at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108)
       at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:919)
       at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:591)
       at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:635)
       at com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.start(ApplicationsConfigMBean.java:744)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:375)
       at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:358)
       at com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:464)
       at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213)
       at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
       at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
       at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
       at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90)
       at $Proxy1.invoke(Unknown Source)
       at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304)
       at com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:174)
       at com.sun.enterprise.deployment.client.DeploymentClientUtils.startApplication(DeploymentClientUtils.java:145)
       at com.sun.enterprise.deployment.client.DeployAction.run(DeployAction.java:537)
       at java.lang.Thread.run(Thread.java:595)
      PWC1306: Startup of context /WoodstockSeam failed due to previous errors
      


        • 1. Re: Is facelets a MUST for a seam application?

          Seam-mail requires facelets - maybe some of the other seam components do too. I think you can simply add facelets to your .war or .ear and not use it for view (page) template creation. Why not just add it?

          From your exception above, it seems like the Tomcat loader is complaining about Facelets not being found - my first guess is that in your web.xml or in faces-config.xml, you've explicitly declared that you want to include Facelets - I don't see a seam class in that stack trace.

          • 2. Re: Is facelets a MUST for a seam application?
            deepsix

            Thanks a lot. I am using glassfish as my deployment container.
            I do have seam-mail in my class path.. Infact a lot of other seam-* jars too since i wasnt sure which one to include and which one to exclude to make my app start working.
            Maybe its because of that its happening.. I still have to strip out unwanted jars from my classpath.

            My faces-config is pretty empty except for the navigation rules. I removed the facelet listener from my web.xml.
            So the only listener i have in my web.xml is the seamListener.

            <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>


            And i am sure this is in no way connected to facelets?

            • 3. Re: Is facelets a MUST for a seam application?
              pmuir

              Seam works without facelets. This looks like stale jars or something which does depend on facelets causing a problem. Give your app a good spring clean :)