users@grizzly.java.net

Re: ServletAdapter Issue

From: Jason Lee <jasondlee_at_sun.com>
Date: Wed, 28 Jan 2009 15:46:02 -0600

Hey, Jeanfracois. I got passed the original issue (the null
InputStream). When Mojarra initializes, it tries to get context
params from web.xml unless told not to. Since web.xml wasn't in the
classpath[1], I told Mojarra not to search for it. Problem "solved."
When I run my test app now, it starts up with no errors and starts
taking requests. The problem I'm seeing now is that either I'm not
setting up the servlet-mapping correctly, or it's not being honored.
Here's my code:

             sa.setServletInstance(new FacesServlet());
              
sa
.addContextParameter
(BooleanWebContextInitParameter
.ForceLoadFacesConfigFiles.getQualifiedName(), "true");
             ws.addGrizzlyAdapter(sa, new String[] {"*.jsf"});
             ws.start();

When I request, say, http://localhost:8080/index.jsf, I get this error:

com.sun.grizzly.http.servlet.ServletAdapter service
SEVERE: service exception:
javax.servlet.ServletException: The FacesServlet cannot have a url-
pattern of /*. Please define a different url-pattern.
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:
323)
         at
com
.sun
.grizzly.http.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:174)

Am I configuring my ServletAdapter/GrizzlyWebServer incorrectly, or is
there a bug? Or something else. :)

On Jan 23, 2009, at 12:04 PM, Jeanfrancois Arcand wrote:

> Salut,
>
> Jason Lee wrote:
>> I'm trying to follow the ServletAdapter example from the javadocs
>> and not having much luck. Here's my code
>> GrizzlyWebServer ws = new GrizzlyWebServer("/Users/jasonlee/
>> Sites");
>> try {
>> ServletAdapter sa = new ServletAdapter();
>> ConfigureListener cl = new ConfigureListener();
>>
>> sa.addServletListener("com.sun.faces.config.ConfigureListener");
>> sa.setRootFolder("/Users/jasonlee/src/glassfish/test/
>> glassfish/lib/install/applications/__admingui/");
>> FacesServlet fs = new FacesServlet();
>> sa.setServletInstance(fs);
>> sa.setProperty("display-name", "Admin GUI");
>> sa.setServletPath("*.jsf");
>> sa.setContextPath("/");
>> ws.addGrizzlyAdapter(sa);
>> ws.start();
>> } catch (Exception ex) {
>> ex.printStackTrace();
>> }
>> }
>
> So far so good. Now you want to embed a JSF application, which is
> something we never experimented. Fist, is the JSF application uses
> the following:
>
> + RequestDispatcher/NameDispatcher
> + Error page mechanism
> + Authentication
> + No JSP
>
> Grizzly Servlet Container is not yet compliant, being developed
> mainly by the community.
>
>> and here's the stack trace I'm getting:
>> Jan 23, 2009 11:09:57 AM com.sun.faces.config.ConfigureListener
>> $WebXmlProcessor scanForFacesServlet
>> WARNING: Unable to process deployment descriptor for context '/'
>> java.lang.IllegalArgumentException: InputStream cannot be null
>> at javax.xml.parsers.SAXParser.parse(SAXParser.java:194)
>> at com.sun.faces.config.ConfigureListener
>> $WebXmlProcessor.scanForFacesServlet(ConfigureListener.java:705)
>> at com.sun.faces.config.ConfigureListener
>> $WebXmlProcessor.<init>(ConfigureListener.java:676)
>> at
>> com
>> .sun
>> .faces
>> .config.ConfigureListener.contextInitialized(ConfigureListener.java:
>> 164)
>> at
>> com
>> .sun
>> .grizzly
>> .http
>> .servlet.ServletContextImpl.initListeners(ServletContextImpl.java:
>> 150)
>> at
>> com
>> .sun
>> .grizzly
>> .http
>> .servlet.ServletAdapter.configureServletEnv(ServletAdapter.java:322)
>> at
>> com
>> .sun.grizzly.http.servlet.ServletAdapter.start(ServletAdapter.java:
>> 198)
>> at
>> com
>> .sun.grizzly.http.SelectorThread.initEndpoint(SelectorThread.java:
>> 1084)
>> at
>> com.sun.grizzly.http.SelectorThread.listen(SelectorThread.java:1135)
>> at
>> com
>> .sun
>> .grizzly.http.embed.GrizzlyWebServer.start(GrizzlyWebServer.java:544)
>> at com.steeplesoft.grizzlyfaces.Main.main(Main.java:40)
>> Jan 23, 2009 11:09:57 AM com.sun.faces.config.ConfigureListener
>
> Can you point me to the code that is doing that? I guess I can find
> it in the JSF project....
>
>
>> contextInitialized
>> INFO: Initializing Mojarra 2.0.0 (SNAPSHOT 20090123) for context '/'
>> Jan 23, 2009 11:09:58 AM com.sun.faces.spi.InjectionProviderFactory
>> createInstance
>> INFO: JSF1048: PostConstruct/PreDestroy annotations present.
>> ManagedBeans methods marked with these annotations will have said
>> annotations processed.
>> Jan 23, 2009 11:09:58 AM com.sun.faces.config.ConfigManager
>> initialize
>> INFO: Unsanitized stacktrace from failed start...
>> java.lang.ClassCastException: java.io.File cannot be cast to
>> java.lang.String
>> at com.sun.faces.application.resource.ResourceCache
>> $WebappResourceMonitor.createSnapshot(ResourceCache.java:534)
>
> Same here.
>
>> at com.sun.faces.application.resource.ResourceCache
>> $WebappResourceMonitor.createSnapshot(ResourceCache.java:520)
>> at com.sun.faces.application.resource.ResourceCache
>> $WebappResourceMonitor.<init>(ResourceCache.java:472)
>> at
>> com
>> .sun
>> .faces
>> .application.resource.ResourceCache.initMonitors(ResourceCache.java:
>> 303)
>> at
>> com
>> .sun
>> .faces.application.resource.ResourceCache.<init>(ResourceCache.java:
>> 148)
>> at
>> com
>> .sun
>> .faces
>> .application.ApplicationAssociate.<init>(ApplicationAssociate.java:
>> 218)
>> at
>> com
>> .sun.faces.application.ApplicationImpl.<init>(ApplicationImpl.java:
>> 205)
>> at
>> com
>> .sun
>> .faces
>> .application
>> .ApplicationFactoryImpl.getApplication(ApplicationFactoryImpl.java:
>> 107)
>> at
>> com
>> .sun
>> .faces
>> .config
>> .processor
>> .AbstractConfigProcessor
>> .getApplication(AbstractConfigProcessor.java:130)
>> at
>> com
>> .sun
>> .faces
>> .config
>> .processor
>> .ApplicationConfigProcessor.process(ApplicationConfigProcessor.java:
>> 234)
>> at
>> com
>> .sun
>> .faces
>> .config
>> .processor
>> .AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:114)
>> at
>> com
>> .sun
>> .faces
>> .config
>> .processor
>> .LifecycleConfigProcessor.process(LifecycleConfigProcessor.java:114)
>> at
>> com
>> .sun
>> .faces
>> .config
>> .processor
>> .AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:114)
>> at
>> com
>> .sun
>> .faces
>> .config
>> .processor
>> .FactoryConfigProcessor.process(FactoryConfigProcessor.java:207)
>> at
>> com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:311)
>> at
>> com
>> .sun
>> .faces
>> .config.ConfigureListener.contextInitialized(ConfigureListener.java:
>> 207)
>> at
>> com
>> .sun
>> .grizzly
>> .http
>> .servlet.ServletContextImpl.initListeners(ServletContextImpl.java:
>> 150)
>> at
>> com
>> .sun
>> .grizzly
>> .http
>> .servlet.ServletAdapter.configureServletEnv(ServletAdapter.java:322)
>> at
>> com
>> .sun.grizzly.http.servlet.ServletAdapter.start(ServletAdapter.java:
>> 198)
>> at
>> com
>> .sun.grizzly.http.SelectorThread.initEndpoint(SelectorThread.java:
>> 1084)
>> at
>> com.sun.grizzly.http.SelectorThread.listen(SelectorThread.java:1135)
>> at
>> com
>> .sun
>> .grizzly.http.embed.GrizzlyWebServer.start(GrizzlyWebServer.java:544)
>> at com.steeplesoft.grizzlyfaces.Main.main(Main.java:40)
>> Jan 23, 2009 11:09:58 AM
>> com.sun.grizzly.http.servlet.ServletContextImpl initListeners
>> SEVERE: com.sun.faces.config.ConfigurationException: CONFIGURATION
>> FAILED! java.io.File cannot be cast to java.lang.String
>> at
>> com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:331)
>> at
>> com
>> .sun
>> .faces
>> .config.ConfigureListener.contextInitialized(ConfigureListener.java:
>> 207)
>> at
>> com
>> .sun
>> .grizzly
>> .http
>> .servlet.ServletContextImpl.initListeners(ServletContextImpl.java:
>> 150)
>> at
>> com
>> .sun
>> .grizzly
>> .http
>> .servlet.ServletAdapter.configureServletEnv(ServletAdapter.java:322)
>> at
>> com
>> .sun.grizzly.http.servlet.ServletAdapter.start(ServletAdapter.java:
>> 198)
>> at
>> com
>> .sun.grizzly.http.SelectorThread.initEndpoint(SelectorThread.java:
>> 1084)
>> at
>> com.sun.grizzly.http.SelectorThread.listen(SelectorThread.java:1135)
>> at
>> com
>> .sun
>> .grizzly.http.embed.GrizzlyWebServer.start(GrizzlyWebServer.java:544)
>> at com.steeplesoft.grizzlyfaces.Main.main(Main.java:40)
>> Caused by: java.lang.ClassCastException: java.io.File cannot be
>> cast to java.lang.String
>> at com.sun.faces.application.resource.ResourceCache
>> $WebappResourceMonitor.createSnapshot(ResourceCache.java:534)
>> at com.sun.faces.application.resource.ResourceCache
>> $WebappResourceMonitor.createSnapshot(ResourceCache.java:520)
>> at com.sun.faces.application.resource.ResourceCache
>> $WebappResourceMonitor.<init>(ResourceCache.java:472)
>> at
>> com
>> .sun
>> .faces
>> .application.resource.ResourceCache.initMonitors(ResourceCache.java:
>> 303)
>> at
>> com
>> .sun
>> .faces.application.resource.ResourceCache.<init>(ResourceCache.java:
>> 148)
>> at
>> com
>> .sun
>> .faces
>> .application.ApplicationAssociate.<init>(ApplicationAssociate.java:
>> 218)
>> at
>> com
>> .sun.faces.application.ApplicationImpl.<init>(ApplicationImpl.java:
>> 205)
>> at
>> com
>> .sun
>> .faces
>> .application
>> .ApplicationFactoryImpl.getApplication(ApplicationFactoryImpl.java:
>> 107)
>> at
>> com
>> .sun
>> .faces
>> .config
>> .processor
>> .AbstractConfigProcessor
>> .getApplication(AbstractConfigProcessor.java:130)
>> at
>> com
>> .sun
>> .faces
>> .config
>> .processor
>> .ApplicationConfigProcessor.process(ApplicationConfigProcessor.java:
>> 234)
>> at
>> com
>> .sun
>> .faces
>> .config
>> .processor
>> .AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:114)
>> at
>> com
>> .sun
>> .faces
>> .config
>> .processor
>> .LifecycleConfigProcessor.process(LifecycleConfigProcessor.java:114)
>> at
>> com
>> .sun
>> .faces
>> .config
>> .processor
>> .AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:114)
>> at
>> com
>> .sun
>> .faces
>> .config
>> .processor
>> .FactoryConfigProcessor.process(FactoryConfigProcessor.java:207)
>> at
>> com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:311)
>> ... 8 more
>> The paths on disk exist, but I'm making semi-educated guesses on
>> the rest of the values. Any nudges in the right direction?
>
> I guess I need to see what JSF is trying to do. Can you file an issue:
>
> https://grizzly.dev.java.net/issues/
>
> so we can work on it. BTW You want to run the admin gui on Grizzly?
> This is great .... and scary as well :-)
>
> A+
>
> -- Jeanfrancois
>
>
>
>> <http://www.java.com> * Jason Lee *
>> Senior Java Developer
>> GlassFish Administration Console
>> *Sun Microsystems, Inc.*
>> Phone x31197/+1 405-343-1964
>> Email jasondlee_at_sun.com <mailto:jasondlee_at_sun.com>
>> Blog http://blogs.sun.com/jasondlee
>> Blog http://blogs.steeplesoft.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>

         Jason Lee
Senior Java Developer
GlassFish Administration Console

Sun Microsystems, Inc.
Phone x31197/+1 405-343-1964
Email jasondlee_at_sun.com
Blog http://blogs.sun.com/jasondlee
Blog http://blogs.steeplesoft.com