public void registerAvailableMBeans(@Observes final AfterDeploymentValidation event) {
    MBeanManager manager = Beans.getReference(MBeanManager.class);
    JMXConfig configuration = Beans.getReference(JMXConfig.class);

    for (AnnotatedType<?> type : types) {
      final Class<?> clazz = type.getJavaClass();
      DynamicMBeanProxy beanProxy = new DynamicMBeanProxy(clazz, this.mbeanContext);

      StringBuffer name =
          new StringBuffer()
              .append(
                  configuration.getMbeanDomain() != null
                      ? configuration.getMbeanDomain()
                      : clazz.getPackage().getName())
              .append(":name=")
              .append(
                  configuration.getMbeanDomain() != null
                      ? configuration.getMbeanDomain()
                      : clazz.getSimpleName());

      if (manager.findMBeanInstance(name.toString()) == null) {
        ObjectInstance instance = MBeanHelper.register(beanProxy, name.toString());
        manager.storeRegisteredMBean(instance);
      }
    }
  }
  public void registerNotificationMBean(@Observes final AfterDeploymentValidation event) {
    MBeanManager mbeanManager = Beans.getReference(MBeanManager.class);
    JMXConfig configuration = Beans.getReference(JMXConfig.class);

    NotificationBroadcaster notificationBroadcaster =
        Beans.getReference(NotificationBroadcaster.class);

    StringBuffer notificationMBeanName =
        new StringBuffer()
            .append(
                configuration.getNotificationDomain() != null
                    ? configuration.getNotificationDomain()
                    : "br.gov.frameworkdemoiselle.jmx")
            .append(":name=")
            .append(configuration.getNotificationMBeanName());

    if (mbeanManager.findMBeanInstance(notificationMBeanName.toString()) == null) {
      ObjectInstance instance =
          MBeanHelper.register(notificationBroadcaster, notificationMBeanName.toString());
      mbeanManager.storeRegisteredMBean(instance);
    }
  }