Announcement Announcement Module
Collapse
No announcement yet.
desperate : help required with webflow/faces and grails 2.0.3 Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • desperate : help required with webflow/faces and grails 2.0.3

    folks desperate for some help

    i'm a closet grails user - and i was trying to get JSF working with grails. the JSF2 plugin doesnt work at all under 2.0

    tried a different tack and built myself a plugin and tried to use mojarra, and cut and pasted webflow 2.3.1. sample stuff into my plugin

    this fails completely in embedded tomcat 7 dev mode see this posted on grails forum
    http://grails.1312388.n4.nabble.com/...td4568248.html

    i get an error like this

    Code:
    | Error 2012-04-18 17:02:39,390 [pool-6-thread-1] ERROR [localhost].[/aGflow]  - StandardWrapper.Throwable
    java.lang.IllegalStateException: Could not find backup for factory javax.faces.context.FacesContextFactory.
            at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:1008)
            at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:343)
            at javax.faces.webapp.FacesServlet.init(FacesServlet.java:302)
    ...
    however when i generate a seperate WAR built in grails and deploy to tomcat 7 my static and facelet page renders of (saw something about problems with mojarra outsid of a WAR)

    so in desperation i tried MyFaces instead and got further - but still doesnt work

    so here goes. In my buildConfig i have this

    Code:
       repositories {
            grailsCentral()
            mavenRepo "http://tomcat.apache.org/dev/dist/m2-repository"
            // uncomment the below to enable remote dependency resolution
            // from public Maven repositories
            //mavenCentral()
            //mavenLocal()
            //mavenRepo "http://snapshots.repository.codehaus.org"
            //mavenRepo "http://repository.codehaus.org"
            //mavenRepo "http://download.java.net/maven/2/"
            //mavenRepo "http://repository.jboss.com/maven2/"
        }
        dependencies {
            // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
    
            // runtime 'mysql:mysql-connector-java:5.1.5'
    		compile 'org.springframework.webflow:spring-webflow:2.3.1.RELEASE',
    			'org.springframework.webflow:spring-faces:2.3.1.RELEASE',
    			//'org.springframework.security:spring-security-core:3.1.0.RELEASE',
    			'org.springframework:spring-webmvc:3.1.1.RELEASE',
    			'org.apache.myfaces.core:myfaces-api:2.1.7',
    			'org.apache.myfaces.core:myfaces-impl:2.1.7'
    
        }
    in my doWithWebDescriptor closure in the plugin i add the webflow/faces bits into the web.xml as per the 2.3.1 documentation

    Code:
    	static def  doWithWebDescriptor (def xml)
    	{
    
    		/** 
    		 * Spring web root context 
    		 */
    		def envParams = xml.'context-param'[0]
    		/* grails already sets this for us 
    		envParams + {
    		  
    			'context-param' {
    			  'param-name'('contextConfigLocation')
    			  'param-value'('/WEB-INF/applicationContext.xml')
    			}
    		} */
    		
    		def listenersList = xml.'listener'
    		def listeners = listenersList[listenersList.size() - 1]
    
    		
    		listeners + {
    			  listener {
    				'listener-class'('org.apache.myfaces.webapp.StartupServletContextListener')
    			  }
    		  } 
    
    		/**
    		 * JSF2 Implementation
    		 * 
    		 */
    		envParams + {
    			
    			  'context-param' {
    				'param-name'('javax.faces.DEFAULT_SUFFIX')
    				'param-value'('.xhtml')
    			  }
    			  'context-param' {
    				'param-name'('javax.faces.PROJECT_STAGE')
    				'param-value'('Development')
    			  }
    			  'context-param' {
    				'param-name'('javax.faces.FACELETS_REFRESH_PERIOD')
    				'param-value'('1')
    			  }
    		  }
      
    		println "add faces servlet"
    		def servletsList = xml.servlet
    		def servlets = servletsList[servletsList.size() -1]
    
    		// load the Faces servlet
    		servlets + {
    			servlet {
    			  'servlet-name'('Faces Servlet')
    			  'servlet-class'('javax.faces.webapp.FacesServlet')
    			  'load-on-startup'('1')
    			}
    		}
    
    		def mappingsList = xml.'servlet-mapping'
    		def mappings = mappingsList[mappingsList.size() - 1]
    			mappings + {
    				  'servlet-mapping' {
    					'servlet-name'('Faces Servlet')
    					'url-pattern'('*.faces')
    				  }
    			  }
    	
    		/**
    		* MVC Implementation
    		*
    		*/
    			println "add MVC servlet"
    			servletsList = xml.servlet
    			servlets = servletsList[servletsList.size() -1]
    	
    			// load the Faces servlet
    			servlets + {
    				servlet {
    					'servlet-name' ('springmvc')
    					'servlet-class' ( 'org.springframework.web.servlet.DispatcherServlet')
    					'init-param' {
    						'param-name' ('contextConfigLocation' )
    						'param-value' ('/WEB-INF/spring/appServlet/servlet-context.xml' )
    					}
    				'load-on-statup' ('1')
    				}
    			}
    	
    			mappingsList = xml.'servlet-mapping'
    			mappings = mappingsList[mappingsList.size() - 1]
    				mappings + {
    						'servlet-mapping' {
    						'servlet-name'('springmvc')
    						'url-pattern'('/app/*')
    					  }
    				  }
    	
    		println "final web.xml config looks like :"
    		println renderFormattedXML (xml)
    		return xml
    	}
    If i run this in standalone tomcat it works and my /app/home facelets page is rendered

    if i run this in embedded tomcat mode it fails

    details in reply post below - the first time i posted this said it was too long - so here goes for part 2

  • #2
    ok part 2 .

    here is my generated web.xml

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" metadata-complete="true" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
        <display-name>/aflowPlugin-development-null</display-name>
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml</param-value>
        </context-param>
      <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
      </context-param>
      <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
      </context-param>
      <context-param>
        <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
        <param-value>1</param-value>
      </context-param>
        <context-param>
            <param-name>webAppRootKey</param-name>
            <param-value>aflowPlugin-development-null</param-value>
        </context-param>
        <filter>
            <filter-name>sitemesh</filter-name>
            <filter-class>org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter</filter-class>
        </filter>
        <filter>
            <filter-name>charEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
            <init-param>
                <param-name>targetBeanName</param-name>
                <param-value>characterEncodingFilter</param-value>
            </init-param>
            <init-param>
                <param-name>targetFilterLifecycle</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
      <filter>
        <filter-name>urlMapping</filter-name>
        <filter-class>org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter</filter-class>
      </filter>
      <filter>
        <filter-name>hiddenHttpMethod</filter-name>
        <filter-class>org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter</filter-class>
      </filter>
      <filter>
        <filter-name>grailsWebRequest</filter-name>
        <filter-class>org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter</filter-class>
      </filter>
        <filter-mapping>
            <filter-name>charEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
      <filter-mapping>
        <filter-name>hiddenHttpMethod</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>REQUEST</dispatcher>
      </filter-mapping>
      <filter-mapping>
        <filter-name>grailsWebRequest</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>ERROR</dispatcher>
      </filter-mapping>
        <filter-mapping>
            <filter-name>sitemesh</filter-name>
            <url-pattern>/*</url-pattern>
            <dispatcher>REQUEST</dispatcher>
            <dispatcher>ERROR</dispatcher>
        </filter-mapping>
      <filter-mapping>
        <filter-name>urlMapping</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>REQUEST</dispatcher>
      </filter-mapping>
      <listener>
        <listener-class>org.codehaus.groovy.grails.plugins.log4j.web.util.Log4jConfigListener</listener-class>
      </listener>
        <listener>
            <listener-class>org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener</listener-class>
        </listener>
      <listener>
        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
      </listener>
      <servlet>
        <servlet-name>H2Console</servlet-name>
        <servlet-class>org.h2.server.web.WebServlet</servlet-class>
        <init-param>
          <param-name>-webAllowOthers</param-name>
          <param-value>true</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>H2Console</servlet-name>
        <url-pattern>/dbconsole/*</url-pattern>
      </servlet-mapping>
        <!-- Grails dispatcher servlet -->
        <servlet>
            <servlet-name>grails</servlet-name>
            <servlet-class>org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
            <async-supported>true</async-supported>
        </servlet>
        <!-- The Groovy Server Pages servlet -->
        <servlet>
            <servlet-name>gsp</servlet-name>
            <servlet-class>org.codehaus.groovy.grails.web.pages.GroovyPagesServlet</servlet-class>
        <init-param>
          <description>
                    Allows developers to view the intermediate source code, when they pass
                    a spillGroovy argument in the URL.
                    </description>
          <param-name>showSource</param-name>
          <param-value>1</param-value>
        </init-param>
        </servlet>
      <servlet>
        <servlet-name>grails-errorhandler</servlet-name>
        <servlet-class>org.codehaus.groovy.grails.web.servlet.ErrorHandlingServlet</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-statup>1</load-on-statup>
      </servlet>
        <servlet-mapping>
            <servlet-name>gsp</servlet-name>
            <url-pattern>*.gsp</url-pattern>
        </servlet-mapping>
      <servlet-mapping>
        <servlet-name>grails-errorhandler</servlet-name>
        <url-pattern>/grails-errorhandler</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>grails</servlet-name>
        <url-pattern>*.dispatch</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/app/*</url-pattern>
      </servlet-mapping>
        <welcome-file-list>
            <!--
            The order of the welcome pages is important.  JBoss deployment will
            break if index.gsp is first in the list.
            -->
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.jsp</welcome-file>
            <welcome-file>index.gsp</welcome-file>
        </welcome-file-list>
      <error-page>
        <error-code>500</error-code>
        <location>/grails-errorhandler</location>
      </error-page>
        <jsp-config>
            <taglib>
                <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
                <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
            </taglib>
            <taglib>
                <taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
                <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
            </taglib>
            <taglib>
                <taglib-uri>http://www.springframework.org/tags</taglib-uri>
                <taglib-location>/WEB-INF/tld/spring.tld</taglib-location>
            </taglib>
            <taglib>
                <taglib-uri>http://grails.codehaus.org/tags</taglib-uri>
                <taglib-location>/WEB-INF/tld/grails.tld</taglib-location>
            </taglib>
        </jsp-config>
    </web-app>

    Comment


    • #3
      part 3 of the errors

      in embedded mode, if i do a run-app - i get a bunch or INFO warnings like this


      Code:
      21-Apr-2012 19:26:05 org.apache.myfaces.config.DefaultFacesConfigurationProvider getStandardFacesConfig
      INFO: Reading standard config META-INF/standard-faces-config.xml
      21-Apr-2012 19:26:05 org.apache.myfaces.config.DefaultFacesConfigurationProvider getWebAppFacesConfig
      INFO: Reading config /WEB-INF/faces-config.xml
      21-Apr-2012 19:26:05 org.apache.myfaces.config.DefaultFacesConfigurationProvider getClassloaderFacesConfig
      INFO: Reading config : jar:file:/C:/Users/802518659/.grails/ivy-cache/org.springframework.webflow/spring-faces/jars/spring-faces-2.3.1.RELEASE.jar!/META-INF/faces-config.xml
      21-Apr-2012 19:26:05 org.apache.myfaces.config.LogMetaInfUtils logArtifact
      INFO: Artifact 'myfaces-api' was found in version '2.1.7' from path 'file:/C:/Users/802518659/.grails/ivy-cache/org.apache.myfaces.core/myfaces-api/jars/myfaces-api-2.1.7.jar'
      21-Apr-2012 19:26:05 org.apache.myfaces.config.LogMetaInfUtils logArtifact
      INFO: Artifact 'myfaces-impl' was found in version '2.1.7' from path 'file:/C:/Users/802518659/.grails/ivy-cache/org.apache.myfaces.core/myfaces-impl/jars/myfaces-impl-2.1.7.jar'
      21-Apr-2012 19:26:05 org.apache.myfaces.util.ExternalSpecifications isBeanValidationAvailable
      INFO: MyFaces Bean Validation support enabled
      21-Apr-2012 19:26:05 org.apache.myfaces.config.FacesConfigurator handleSerialFactory
      INFO: Serialization provider : class org.apache.myfaces.shared_impl.util.serial.DefaultSerialFactory
      21-Apr-2012 19:26:05 org.apache.myfaces.config.annotation.DefaultLifecycleProviderFactory getLifecycleProvider
      INFO: Using LifecycleProvider org.apache.myfaces.config.annotation.Tomcat7AnnotationLifecycleProvider
      21-Apr-2012 19:26:05 org.apache.myfaces.webapp.AbstractFacesInitializer initFaces
      INFO: ServletContext initialized.
      21-Apr-2012 19:26:05 org.apache.myfaces.webapp.WebConfigParamsLogger logWebContextParams
      INFO: Tomahawk jar not available. Autoscrolling, DetectJavascript, AddResourceClass and CheckExtensionsFilter are disabled now.
      21-Apr-2012 19:26:05 org.apache.myfaces.webapp.WebConfigParamsLogger logWebContextParams
      INFO: Scanning for context init parameters not defined. It is not necessary to define them all into your web.xml, they are just provided here for informative purposes. To disable this messages set org.apache.myfaces.LOG_WEB_CONTEXT_PARAMS config param to 'false'
      21-Apr-2012 19:26:06 org.apache.myfaces.webapp.WebConfigParamsLogger logWebContextParams
      INFO: No context init parameter 'javax.faces.RESOURCE_EXCLUDES' found, using default value '.class .jsp .jspx .properties .xhtml .groovy'.
      21-Apr-2012 19:26:06 org.apache.myfaces.webapp.WebConfigParamsLogger logWebContextParams
      ...elided middle bits
      
      21-Apr-2012 19:26:06 org.apache.myfaces.webapp.WebConfigParamsLogger logWebContextParams
      INFO: No context init parameter 'org.apache.myfaces.EXPRESSION_FACTORY' found.
      21-Apr-2012 19:26:06 org.apache.myfaces.webapp.WebConfigParamsLogger logWebContextParams
      INFO: No context init parameter 'org.apache.myfaces.INITIALIZE_ALWAYS_STANDALONE' found, using default value 'false'.
      21-Apr-2012 19:26:06 org.apache.myfaces.webapp.WebConfigParamsLogger logWebContextParams
      INFO: No context init parameter 'org.apache.myfaces.LOG_WEB_CONTEXT_PARAMS' found, using default value 'auto'.
      21-Apr-2012 19:26:06 org.apache.myfaces.webapp.WebConfigParamsLogger logWebContextParams
      INFO: No context init parameter 'org.apache.myfaces.FACES_INITIALIZER' found.
      21-Apr-2012 19:26:06 org.apache.myfaces.webapp.WebConfigParamsLogger logWebContextParams
      INFO: No context init parameter 'org.apache.myfaces.FACES_INIT_PLUGINS' found.
      21-Apr-2012 19:26:06 org.apache.myfaces.webapp.AbstractFacesInitializer initFaces
      WARNING: 
      
      *******************************************************************
      
      *** WARNING: Apache MyFaces-2 is running in DEVELOPMENT mode.   ***
      
      ***                                         ^^^^^^^^^^^         ***
      
      *** Do NOT deploy to your live server(s) without changing this. ***
      
      *** See Application#getProjectStage() for more information.     ***
      
      *******************************************************************
      but the servers starts and will serve a standard gsp file <plugin>/index.gsp

      Comment


      • #4
        the if i access my facelet on /app/home i get this

        Code:
         Line | Method
        ->> 1455 | initializeBean     in org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
        |   386 | initializeBean     in     ''
        |   442 | applyLifecycleMethods in org.springframework.web.servlet.view.UrlBasedViewResolver
        |   437 | loadView           in     ''
        |   186 | createView . . . . in org.springframework.web.servlet.view.AbstractCachingViewResolver
        |   401 | createView         in org.springframework.web.servlet.view.UrlBasedViewResolver
        |   103 | resolveViewName .  in org.springframework.web.servlet.view.AbstractCachingViewResolver
        |   1211 | resolveViewName    in org.springframework.web.servlet.DispatcherServlet
        |   1160 | render . . . . . . in     ''
        |   950 | doDispatch         in     ''
        |   852 | doService . . . .  in     ''
        |   882 | processRequest     in org.springframework.web.servlet.FrameworkServlet
        |   778 | doGet . . . . . .  in     ''
        |   621 | service            in javax.servlet.http.HttpServlet
        ....
        
        |   364 | processFilterChain in org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter
        |   231 | doFilterInternal . in     ''
        |    76 | doFilter           in org.springframework.web.filter.OncePerRequestFilter
        |   243 | internalDoFilter . in org.apache.catalina.core.ApplicationFilterChain
        |   210 | doFilter           in     ''
        ....
        
        |    69 | doFilterInternal . in org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter
        |    76 | doFilter           in org.springframework.web.filter.OncePerRequestFilter
        |   243 | internalDoFilter . in org.apache.catalina.core.ApplicationFilterChain
        |   210 | doFilter           in     ''
        
        Caused by IllegalStateException: No Factories configured for this Application. This happens if the faces-initialization does not work at all - make sure that you properly include all configuration settings necessary for a basic faces application and that all the necessary libs are included. Also check the logging output of your web application and your container for any exceptions!
        If you did that and find nothing, the mistake might be due to the fact that you use some special web-containers which do not support registering context-listeners via TLD files and a context listener is not setup in your web.xml.
        A typical config looks like this;
        <listener>
          <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
        </listener>
        
        ->> 286 | _getFactory        in javax.faces.FactoryFinder
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
        |   206 | getFactory         in     ''
        |   108 | createFacesLifecycle in org.springframework.faces.mvc.JsfView
        |    53 | afterPropertiesSet in     ''
        |   1514 | invokeInitMethods  in org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
        |   1452 | initializeBean     in     ''
        |   386 | initializeBean . . in     ''
        |   442 | applyLifecycleMethods in org.springframework.web.servlet.view.UrlBasedViewResolver
        |   437 | loadView . . . . . in     ''
        |   186 | createView         in org.springframework.web.servlet.view.AbstractCachingViewResolver
        |   401 | createView . . . . in org.springframework.web.servlet.view.UrlBasedViewResolver
        |   103 | resolveViewName    in org.springframework.web.servlet.view.AbstractCachingViewResolver
        |   1211 | resolveViewName .  in org.springframework.web.servlet.DispatcherServlet
        |   1160 | render             in     ''
        |   950 | doDispatch . . . . in     ''
        ...

        Comment


        • #5
          and last note to problem

          and in my console i get a last issue that looks like this
          Code:
          ..
          Caused by: java.lang.UnsupportedOperationException: unable to watch ___LineNumberPlaceholder. Computed location=\groovy\script
          	at com.springsource.loaded.agent.SpringLoadedPreProcessor.getWatchPathFromProtectionDomain(SpringLoadedPreProcessor.java:425)
          	at com.springsource.loaded.agent.SpringLoadedPreProcessor.preProcess(SpringLoadedPreProcessor.java:161)
          	at com.springsource.loaded.agent.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:89)
          	... 69 more

          I dont want to have to give up dev mode working in STS and have to export to WAR all the time. What is going on and how can i fix it

          really appreciate some fresh eyes and some help on this its driving my barmy

          yours in advance

          Comment


          • #6
            I think its something to do with grails run-app and its packaging - as well as doing stuff in your workspace under STS something happens round the back of the file system in C:\Users\802518659\.grails\2.0.3\projects\aflowMyf acesPlugin


            so run i try and do a run app - it creates a web.xml.tmp file

            this a web.xml formatted file - but if you look at it doesnt have the additions i have written through the doWithXMLDescriptor closure in the plugin descriptor file

            where are is if you generaate a war with run-war - it builds an 'xml' file the war.web-inf directory and this does have additions included .

            so when your then deploy that war on tomcat externally which i did it kind of works - at least it serves my /app/home facelet page

            whereas if i do a run-war in embedded working as opposed to run-app i get an error like this

            Code:
            WARNING: No mappings of FacesServlet found. Abort initializing MyFaces.
            | Error 2012-04-21 22:40:12,486 [pool-6-thread-1] ERROR [localhost].[/aflowMyfacesPlugin]  - StandardWrapper.Throwable
            java.lang.IllegalStateException: No Factories configured for this Application. This happens if the faces-initialization does not work at all - make sure that you properly include all configuration settings necessary for a basic faces application and that all the necessary libs are included. Also check the logging output of your web application and your container for any exceptions!
            If you did that and find nothing, the mistake might be due to the fact that you use some special web-containers which do not support registering context-listeners via TLD files and a context listener is not setup in your web.xml.
            A typical config looks like this;
            <listener>
              <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
            </listener>
            	at javax.faces.FactoryFinder._getFactory(FactoryFinder.java:286)
            	at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:206)
            	at javax.faces.webapp.
            ...
            would be intereted is anyone know what this is doing - i'll post back over at the grails forum also

            WIll

            Comment

            Working...
            X