Search in sources :

Example 1 with ResourceInjectionService

use of org.apache.webbeans.spi.ResourceInjectionService in project tomee by apache.

the class OpenEJBLifecycle method stopApplication.

@Override
public void stopApplication(final Object endObject) {
    logger.debug("OpenWebBeans Container is stopping.");
    try {
        // Fire shut down
        if (WebappBeanManager.class.isInstance(beanManager)) {
            WebappBeanManager.class.cast(beanManager).beforeStop();
        }
        webBeansContext.getContextsService().endContext(RequestScoped.class, endObject);
        webBeansContext.getContextsService().endContext(ConversationScoped.class, endObject);
        webBeansContext.getContextsService().endContext(SessionScoped.class, endObject);
        webBeansContext.getContextsService().endContext(ApplicationScoped.class, endObject);
        webBeansContext.getContextsService().endContext(Singleton.class, endObject);
        // clean up the EL caches after each request
        ELContextStore elStore = ELContextStore.getInstance(false);
        if (elStore != null) {
            elStore.destroyELContextStore();
        }
        this.beanManager.fireEvent(new BeforeShutdownImpl(), true);
        // this will now even destroy the ExtensionBeans and other internal stuff
        this.contextsService.destroy(endObject);
        // Unbind BeanManager
        if (jndiService != null) {
            jndiService.unbind(WebBeansConstants.WEB_BEANS_MANAGER_JNDI_NAME);
        }
        // Free all plugin resources
        ((CdiPlugin) webBeansContext.getPluginLoader().getEjbPlugin()).clearProxies();
        webBeansContext.getPluginLoader().shutDown();
        // Clear extensions
        webBeansContext.getExtensionLoader().clear();
        // Delete Resolutions Cache
        beanManager.getInjectionResolver().clearCaches();
        // Delete AnnotateTypeCache
        webBeansContext.getAnnotatedElementFactory().clear();
        // After Stop
        // Clear the resource injection service
        final ResourceInjectionService injectionServices = webBeansContext.getService(ResourceInjectionService.class);
        if (injectionServices != null) {
            injectionServices.clear();
        }
        // Comment out for commit OWB-502
        // ContextFactory.cleanUpContextFactory();
        CdiAppContextsService.class.cast(contextsService).removeThreadLocals();
        WebBeansFinder.clearInstances(WebBeansUtil.getCurrentClassLoader());
        // Clear BeanManager
        this.beanManager.clear();
        // Clear singleton list
        WebBeansFinder.clearInstances(WebBeansUtil.getCurrentClassLoader());
    } catch (final Exception e) {
        logger.error("An error occured while stopping the container.", e);
    }
}
Also used : BeforeShutdownImpl(org.apache.webbeans.portable.events.discovery.BeforeShutdownImpl) ELContextStore(org.apache.webbeans.el.ELContextStore) ResourceInjectionService(org.apache.webbeans.spi.ResourceInjectionService) ObjectStreamException(java.io.ObjectStreamException) OpenEJBRuntimeException(org.apache.openejb.OpenEJBRuntimeException)

Aggregations

ObjectStreamException (java.io.ObjectStreamException)1 OpenEJBRuntimeException (org.apache.openejb.OpenEJBRuntimeException)1 ELContextStore (org.apache.webbeans.el.ELContextStore)1 BeforeShutdownImpl (org.apache.webbeans.portable.events.discovery.BeforeShutdownImpl)1 ResourceInjectionService (org.apache.webbeans.spi.ResourceInjectionService)1