I am already using Guice for regular DI in my application, and wants it to 
handle the servlets as well. The relevant classes are given below.The 
setup still works fine with my regular DI, but once I add a serving rule in 
GuiceServletModule, I get the attached error/stacktrace on startup (using 
Jetty).

I get the same message if I set it up as suggested on 
http://code.google.com/p/google-guice/wiki/Servlets as well. I cannot 
manage to find any useful information about this error. Is there anybody 
who understands why this fails?

*Error on startup:*
2012-05-16 15:46:31.535:WARN:oejw.WebAppContext:Failed startup of context 
o.m.j.p.JettyWebAppContext{...},file:...
com.google.inject.CreationException: Guice creation errors:<|<|1) Error in 
custom provider, java.lang.ClassCastException: 
com.google.inject.servlet.ServletDefinition cannot be cast to 
com.google.inject.Provider<|  at 
com.google.inject.servlet.ServletsModuleBuilder.configure(ServletsModuleBuilder.java:56)<|
 
 while locating com.google.inject.servlet.ServletDefinition annotated with 
@com.google.inject.internal.UniqueAnnotations$Internal(value=1)<|  at 
com.google.inject.servlet.ManagedServletPipeline.<init>(ManagedServletPipeline.java:52)<|
 
 while locating com.google.inject.servlet.ManagedServletPipeline<|    for 
parameter 1 at 
com.google.inject.servlet.ManagedFilterPipeline.<init>(ManagedFilterPipeline.java:62)<|
 
 while locating com.google.inject.servlet.ManagedFilterPipeline<|  while 
locating com.google.inject.servlet.FilterPipeline<|    for parameter 0 at 
com.google.inject.servlet.GuiceFilter.setPipeline(GuiceFilter.java:86)<|<|1 
error
at 
com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:354)
at 
com.google.inject.InjectorBuilder.injectDynamically(InjectorBuilder.java:173)
at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:113)
at com.google.inject.Guice.createInjector(Guice.java:92)
at com.google.inject.Guice.createInjector(Guice.java:69)
at com.google.inject.Guice.createInjector(Guice.java:59)
at 
no.wis.collecting.core.StatInitializer.contextInitialized(StatInitializer.java:45)
at 
org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:764)
at 
org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:406)
at 
org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:756)
at 
org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:242)
at 
org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221)
at 
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:699)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454)
at 
org.mortbay.jetty.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:256)
at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at 
org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
at 
org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:167)
at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at 
org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at 
org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:90)
at org.eclipse.jetty.server.Server.doStart(Server.java:262)
at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65)
at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at 
org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:511)
at 
org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:364)
at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:516)
at 
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at 
org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at 
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
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:597)
at 
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at 
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at 
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: 
java.lang.ClassCastException: com.google.inject.servlet.ServletDefinition 
cannot be cast to com.google.inject.Provider
at 
com.google.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:48)
at com.google.inject.InjectorImpl$4$1.call(InjectorImpl.java:758)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:811)
at com.google.inject.InjectorImpl$4.get(InjectorImpl.java:754)
at 
com.google.inject.servlet.ManagedServletPipeline.collectServletDefinitions(ManagedServletPipeline.java:70)
at 
com.google.inject.servlet.ManagedServletPipeline.<init>(ManagedServletPipeline.java:53)
at 
com.google.inject.servlet.ManagedServletPipeline$$FastClassByGuice$$c910e7a6.newInstance(<generated>)
at 
com.google.inject.internal.cglib.reflect.FastConstructor.newInstance(FastConstructor.java:40)
at 
com.google.inject.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:60)
at 
com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:85)
at 
com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111)
at 
com.google.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:45)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:811)
at 
com.google.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:42)
at com.google.inject.Scopes$1$1.get(Scopes.java:54)
at 
com.google.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:48)
at 
com.google.inject.SingleParameterInjector.inject(SingleParameterInjector.java:42)
at 
com.google.inject.SingleParameterInjector.getAll(SingleParameterInjector.java:66)
at 
com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:84)
at 
com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111)
at 
com.google.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:45)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:811)
at 
com.google.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:42)
at com.google.inject.Scopes$1$1.get(Scopes.java:54)
at 
com.google.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:48)
at com.google.inject.FactoryProxy.get(FactoryProxy.java:56)
at 
com.google.inject.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:45)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:811)
at 
com.google.inject.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:42)
at com.google.inject.Scopes$1$1.get(Scopes.java:54)
at 
com.google.inject.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:48)
at 
com.google.inject.SingleParameterInjector.inject(SingleParameterInjector.java:42)
at 
com.google.inject.SingleParameterInjector.getAll(SingleParameterInjector.java:66)
at 
com.google.inject.SingleMethodInjector.inject(SingleMethodInjector.java:84)
at 
com.google.inject.InjectionRequestProcessor$StaticInjection$1.call(InjectionRequestProcessor.java:109)
at 
com.google.inject.InjectionRequestProcessor$StaticInjection$1.call(InjectionRequestProcessor.java:106)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:804)
at 
com.google.inject.InjectionRequestProcessor$StaticInjection.injectMembers(InjectionRequestProcessor.java:106)
at 
com.google.inject.InjectionRequestProcessor.injectMembers(InjectionRequestProcessor.java:74)
at 
com.google.inject.InjectorBuilder.injectDynamically(InjectorBuilder.java:168)
at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:113)
at com.google.inject.Guice.createInjector(Guice.java:92)
at com.google.inject.Guice.createInjector(Guice.java:69)
at com.google.inject.Guice.createInjector(Guice.java:59)
at com.example.AppInitializer.contextInitialized(AppInitializer.java:45)
at 
org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:764)
at 
org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:406)
at 
org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:756)
at 
org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:242)
at 
org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221)
at 
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:699)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454)
at 
org.mortbay.jetty.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:256)
at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at 
org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
at 
org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:167)
at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at 
org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at 
org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:90)
at org.eclipse.jetty.server.Server.doStart(Server.java:262)
at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65)
at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at 
org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:511)
at 
org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:364)
at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:516)
at 
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at 
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at 
org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at 
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
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:597)
at 
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at 
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at 
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

*My web.xml*
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns="http://java.sun.com/xml/ns/javaee"; 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
version="2.5">
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>   
<listener>
<listener-class>com.example.AppInitializer</listener-class>
</listener>
</web-app>

*AppInitializer.java:*
public class AppInitializer implements ServletContextListener {

    public void contextInitialized(ServletContextEvent sce) {
        
// ... 
        GuiceMainModule guiceMain = new GuiceMainModule();
        GuiceServletModule guiceServlet = new GuiceServletModule();
        Injector injector = Guice.createInjector(guiceMain, guiceServlet);
        App..setInjector(injector);
             
    }
}

GuiceServletModule.java
public class GuiceServletModule extends ServletModule {

    @Override
    protected void configureServlets() {
        serve("/hello").with(HelloWorld.class);
    }
}

*HelloWorld.java*
@Singleton
public class HelloWorld extends HttpServlet {

    private static final long serialVersionUID = 1L;

    // ...

    @Override
    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response)
            throws ServletException, IOException {
        
        response.getWriter().print("<h1>Hello World!</h1>");
    }
}
*
*

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-guice/-/hmiDRJ-IwnYJ.
To post to this group, send email to google-guice@googlegroups.com.
To unsubscribe from this group, send email to 
google-guice+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en.

Reply via email to