Uploaded image for project: 'Weld'
  1. Weld
  2. WELD-891

Singleton is not set exception for extension observer of BeforeShutdown event

    XMLWordPrintable

Details

    Description

      When updating to Weld 1.1.1.Final from Weld 1.1.0.Final (this version works fine) the following exception is thrown during a Weld shutdown() invocation:

      225509 [main] ERROR org.jboss.weld.Bootstrap - Exception(s) thrown during observ
      er of BeforeShutdown
      225509 [main] ERROR org.jboss.weld.Bootstrap -
      java.lang.IllegalStateException: Singleton is not set
      at org.jboss.weld.bootstrap.api.helpers.IsolatedStaticSingletonProvider$
      IsolatedStaticSingleton.get(IsolatedStaticSingletonProvider.java:52)
      at org.jboss.weld.context.AbstractSharedContext.getBeanStore(AbstractSha
      redContext.java:54)
      at org.jboss.weld.context.AbstractContext.get(AbstractContext.java:93)
      at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.j
      ava:690)
      at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.
      java:264)
      at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.jav
      a:234)
      at org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractC
      ontainerEvent.java:88)
      at org.jboss.weld.bootstrap.events.BeforeShutdownImpl.fire(BeforeShutdow
      nImpl.java:62)
      at org.jboss.weld.bootstrap.events.BeforeShutdownImpl.fire(BeforeShutdow
      nImpl.java:50)
      at org.jboss.weld.bootstrap.WeldBootstrap.shutdown(WeldBootstrap.java:49
      1)
      at org.jboss.weld.environment.se.ShutdownManager.shutdown(ShutdownManage
      r.java:45)
      at org.jboss.weld.environment.se.org$jboss$weld$bean-classpath-ManagedBe
      an-org$jboss$weld$environment$se$ShutdownManager$@javax$enterprise$context$Appli
      cationScoped()${}_$$_WeldClientProxy.shutdown(org$jboss$weld$bean-classpath-Mana
      gedBean-org$jboss$weld$environment$se$ShutdownManager$@javax$enterprise$context$
      ApplicationScoped()${}_$$_WeldClientProxy.java)
      at org.jboss.weld.environment.se.Weld.shutdown(Weld.java:169)
      at org.apache.ode.server.event.EventTest.tearDownAfterClass(EventTest.ja
      va:76)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
      java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(Framework
      Method.java:44)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCal
      lable.java:15)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMe
      thod.java:41)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.ja
      va:37)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
      at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.
      java:35)
      at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4
      Provider.java:146)
      at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider
      .java:97)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
      java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.inv
      oke(ProviderFactory.java:103)
      at $Proxy0.invoke(Unknown Source)
      at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(Suref
      ireStarter.java:145)
      at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(S
      urefireStarter.java:87)
      at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:
      69)

      Running the code through a debugger it looks like my CDI extension, which is not annotated with a scope annotation, is being placed in the ApplicationScope context but when Weld shutdowns the following code is invoked

      WeldBootstrap line 490:

      try

      { applicationContext.invalidate(); BeforeShutdownImpl.fire(deploymentManager, beanDeployments); }

      which invalidates the context the extension exists in before invoking the shutdown event on the extension thus causing the exception.

      Please download and run the attached maven example by running mvn clean test

      Attachments

        Activity

          People

            ajustin@redhat.com Ales Justin
            aanderson_jira Aaron Anderson (Inactive)
            Votes:
            7 Vote for this issue
            Watchers:
            10 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: