8 Replies Latest reply on Nov 28, 2008 3:19 PM by legart

    Seam Guice with Seam 2.1.0GA?

    legart
      Hello

      I'm trying to get Seam Guice to work in a Seam 2.1.0GA project.

      * seam-guice.jar and guice.jar added to classpath
      * |xmlns:guice="http://jboss.org/jbosslabs/seam-guice" added to start of compnents.xml|
      * added http://anonsvn.jboss.org/repos/labs/labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/resources/guice-2.1.xsd to xsi:schemaLocation
      * added the following to components.xml


      `<guice:init injector=#{guiceinjector}/>

      <guice:injector name="guiceinjector">
      <guice:modules>
      <value>dk.company.servlets.ServletGuiceModule</value>
      <value>com.google.inject.servlet.ServletModule</value>
      </guice:modules>
      </guice:injector>
      `



      But upon startup I get the following exception:

      2008-11-27 16:29:19,310 ERROR [org.apache.catalina.core.ContainerBase] Exception sending context initialized event
      to listener instance of class org.jboss.seam.servlet.SeamListener
      java.lang.RuntimeException: error while reading /WEB-INF/components.xml
              at org.jboss.seam.init.Initialization.initComponentsFromXmlDocument(Initialization.java:221)
              at org.jboss.seam.init.Initialization.create(Initialization.java:124)
              at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:34)
              at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3854)
              at org.apache.catalina.core.StandardContext.start(StandardContext.java:4352)
              at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
              at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:732)
              at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:553)
              at sun.reflect.GeneratedMethodAccessor217.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:585)
              at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
              at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
              at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
              at org.apache.catalina.core.StandardContext.init(StandardContext.java:5300)
              at sun.reflect.GeneratedMethodAccessor213.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:585)
              at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
              at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
              at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
              at org.jboss.web.tomcat.service.TomcatDeployer.performDeployInternal(TomcatDeployer.java:301)
              at org.jboss.web.tomcat.service.TomcatDeployer.performDeploy(TomcatDeployer.java:104)
              at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:375)
              at org.jboss.web.WebModule.startModule(WebModule.java:83)
              at org.jboss.web.WebModule.startService(WebModule.java:61)
              at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
              at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
              at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:585)
              at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
              at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
              at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
              at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
              at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
              at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
              at $Proxy0.start(Unknown Source)
              at org.jboss.system.ServiceController.start(ServiceController.java:417)
              at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:585)
              at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
            at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
              at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
              at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
              at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
              at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
              at $Proxy0.start(Unknown Source)
              at org.jboss.system.ServiceController.start(ServiceController.java:417)
              at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:585)
              at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
              at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
              at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
              at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
              at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
              at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
              at $Proxy54.start(Unknown Source)
              at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:466)
              at sun.reflect.GeneratedMethodAccessor196.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:585)
              at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
              at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
              at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
              at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
              at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
              at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:97)
              at org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(InterceptorServiceMBeanSupport.java:238)
              at org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:87)
              at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)
              at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)
              at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
              at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
              at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
              at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
              at $Proxy55.start(Unknown Source)
              at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
              at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1015)
              at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
              at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
              at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:585)
              at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
              at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
              at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
              at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
              at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
              at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
              at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
              at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
              at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
              at $Proxy9.deploy(Unknown Source)
              at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
              at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:610)
              at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
              at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274)
              at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225)
      Caused by: java.lang.RuntimeException: Error loading element Init with component name null and component class null
              at org.jboss.seam.init.Initialization.installComponentsFromXmlElements(Initialization.java:342)
              at org.jboss.seam.init.Initialization.initComponentsFromXmlDocument(Initialization.java:217)
              ... 89 more

      Any clues to what i'm doing wrong?

        • 1. Re: Seam Guice with Seam 2.1.0GA?
          rmoore2112

          In order to make the GuiceInterceptor compapitable with Seam 2.1.X, You have to implement the following method on the GuiceInterceptor class and build the seam-guice.jar



          @Override
              public boolean isInterceptorEnabled() {
                 return true;
              }
          



          Source code can be found here:

          • 2. Re: Seam Guice with Seam 2.1.0GA?
            legart

            Thank you for the response. I just tried to rebuild the jar, with that method added to GuiceInterceptor.java, however I still get the same stacktrace when the application starts up.


            Maybe my configuration is wrong?

            • 3. Re: Seam Guice with Seam 2.1.0GA?
              wrzep

              Michael,


              Could you please check whether the guiceinjector component is instantiated correctly? (remove <guice:init injector=#{guiceinjector}/> but leave <guice:injector.../>).


              -Pawel

              • 4. Re: Seam Guice with Seam 2.1.0GA?
                wrzep

                Hm... second guess ;)


                Do you have <guice:init injector=#{guiceinjector}/> or <guice:init injector="#{guiceinjector}"/> in your components.xml? (Mind the quotation marks) The latter is correct :)


                -Pawel

                • 5. Re: Seam Guice with Seam 2.1.0GA?
                  legart
                  Hi

                  Yes, I get:

                  2008-11-28 13:35:06,078 INFO  [org.jboss.seam.contexts.Contexts] starting up: guiceinjector
                  2008-11-28 13:35:06,093 INFO  [org.jboss.labs.seam.guice.Injector] Creating injector ''from modules: [dk.company.tacs.servlets.ServletGuiceModule, com.google.inject.servlet.ServletModule]

                  When commenting out

                  <guice:init injector="#{guiceinjector}"/>
                  • 6. Re: Seam Guice with Seam 2.1.0GA?
                    legart

                    The qoutes are there, not sure why they disappeared from the first post.

                    • 7. Re: Seam Guice with Seam 2.1.0GA?
                      wrzep

                      <guice:init name="org.jboss.labs.seam.guice.init" class="org.jboss.labs.seam.guice.GuiceInit" injector="#{guiceinjector}"/> might be a workaround then.


                      -Pawel

                      • 8. Re: Seam Guice with Seam 2.1.0GA?
                        legart

                        That solved the problem. Many thanks!