Class HibernateExtendedBeanManager

java.lang.Object
org.jboss.as.jpa.hibernate.HibernateExtendedBeanManager
All Implemented Interfaces:
org.hibernate.resource.beans.container.spi.ExtendedBeanManager

public class HibernateExtendedBeanManager extends Object implements org.hibernate.resource.beans.container.spi.ExtendedBeanManager
HibernateExtendedBeanManager helps defer the registering of entity listeners, with the Jakarta Contexts and Dependency Injection BeanManager until after the persistence unit is available for lookup by Jakarta Contexts and Dependency Injection bean(s). This solves the WFLY-2387 issue of Jakarta Persistence entity listeners referencing the Jakarta Contexts and Dependency Injection bean, when the bean cycles back to the persistence unit, or a different persistence unit.
Author:
Scott Marlow
  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.hibernate.resource.beans.container.spi.ExtendedBeanManager

    org.hibernate.resource.beans.container.spi.ExtendedBeanManager.LifecycleListener
  • Constructor Summary

    Constructors
    Constructor
    Description
    HibernateExtendedBeanManager(jakarta.enterprise.inject.spi.BeanManager beanManager)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Hibernate calls registerLifecycleListener to register callback to be notified when the Jakarta Contexts and Dependency Injection BeanManager can safely be used.
    void
    registerLifecycleListener(org.hibernate.resource.beans.container.spi.ExtendedBeanManager.LifecycleListener lifecycleListener)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • HibernateExtendedBeanManager

      public HibernateExtendedBeanManager(jakarta.enterprise.inject.spi.BeanManager beanManager)
  • Method Details

    • beanManagerIsAvailableForUse

      public void beanManagerIsAvailableForUse()
      Hibernate calls registerLifecycleListener to register callback to be notified when the Jakarta Contexts and Dependency Injection BeanManager can safely be used. The Jakarta Contexts and Dependency Injection BeanManager can safely be used when the Jakarta Contexts and Dependency Injection AfterDeploymentValidation event is reached.

      Note: Caller (BeanManagerAfterDeploymentValidation) is expected to synchronize calls to registerLifecycleListener() + beanManagerIsAvailableForUse(), which protects HibernateExtendedBeanManager.lifecycleListeners from being read/written from multiple concurrent threads. There are many writer threads (one per deployed persistence unit) and one reader/writer thread expected to be triggered by one AfterDeploymentValidation event per deployment.

    • registerLifecycleListener

      public void registerLifecycleListener(org.hibernate.resource.beans.container.spi.ExtendedBeanManager.LifecycleListener lifecycleListener)
      Specified by:
      registerLifecycleListener in interface org.hibernate.resource.beans.container.spi.ExtendedBeanManager