6 Replies Latest reply on Apr 30, 2007 5:15 AM by Dan Liu

    unable to access application scoped component in @Timeout me

    Dan Liu Apprentice

      I'm using ejb3 timer and I wanna access application scoped component when @Timeout method is called. I get "no active application context" when trying to do this. Is there anyway to do it?

        • 2. Re: unable to access application scoped component in @Timeou
          Dan Liu Apprentice

          In the doc, Seam timer is triggered from paymentAction.scheduleRecurringPayment() which itself is a seam component and it has seam application context. In my case, seam component is triggered at startup time and it doesn't have any active application context. Is there anyway to force seam to create an application context from my seam component?

          • 3. Re: unable to access application scoped component in @Timeou
            Pete Muir Master

            Are you saying you want to schedule your timer at application start? Then just put the code to schedule the async. method inside an @Create method in an APPLICATION scoped component marked @Startup.

            You can use Seam's Lifecycle class to manually start and end calls into Seam - but as Seam has built in support for timers, this seems unnecessary ;)

            • 4. Re: unable to access application scoped component in @Timeou
              Dan Liu Apprentice

              I get IllegalStateException when I try to call an @Asynchronous annotated method in my @Create annotated method when app is started.

              ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/]] Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener
              rg.jboss.seam.core.dispatcherjava.lang.IllegalStateException: org.jboss.seam.core.dispatcher is not installed in components.xml
              java.lang.IllegalStateException: org.jboss.seam.core.dispatcher is not installed in components.xml
               at org.jboss.seam.interceptors.AsynchronousInterceptor.aroundInvoke(AsynchronousInterceptor.java:29)
               at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
               at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:103)
               at org.jboss.seam.intercept.ClientSideInterceptor.invoke(ClientSideInterceptor.java:50)
               at org.javassist.tmp.java.lang.Object_$$_javassist_55.scheduleTimer(Object_$$_javassist_55.java)
               at com.example.admin.auto.RunOnStartup.init(RunOnStartup.java:45)
               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 org.jboss.seam.util.Reflections.invoke(Reflections.java:20)
               at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
               at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:57)
               at org.jboss.seam.interceptors.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:34)
               at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
               at org.jboss.seam.interceptors.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:47)
               at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
               at org.jboss.seam.interceptors.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:27)
               at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
               at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:103)
               at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:151)
               at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:87)
               at com.example.admin.auto.RunOnStartup_$$_javassist_54.init(RunOnStartup_$$_javassist_54.java)
               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 org.jboss.seam.util.Reflections.invoke(Reflections.java:20)
               at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:123)
               at org.jboss.seam.Component.callComponentMethod(Component.java:1834)
               at org.jboss.seam.Component.callCreateMethod(Component.java:1757)
               at org.jboss.seam.Component.newInstance(Component.java:1746)
               at org.jboss.seam.contexts.Lifecycle.startup(Lifecycle.java:175)
              
              
              


              • 5. Re: unable to access application scoped component in @Timeou
                Pete Muir Master

                And you have the dispatcher installed?

                <core:dispatcher />


                What version of Seam?

                • 6. Re: unable to access application scoped component in @Timeou
                  Dan Liu Apprentice

                  No, I just noticed I don't have "<core:dispatcher />" in my components.xml. Everything is working now. Thanks a lot.