Buggy code:
public class SingletonComponentDescription extends SessionBeanComponentDescription { private boolean initOnStartup ; private final List < ServiceName > dependsOn = new ArrayList < ServiceName > ( ) ; public SingletonComponentDescription ( final String componentName , final String componentClassName , final EjbJarDescription ejbJarDescription , final ServiceName deploymentUnitServiceName ) { } @ Override public ComponentConfiguration createConfiguration ( EEApplicationDescription applicationDescription ) { ComponentConfiguration singletonComponentConfiguration = new ComponentConfiguration ( this , applicationDescription . getClassConfiguration ( getComponentClassName ( ) ) ) ; singletonComponentConfiguration . setComponentCreateServiceFactory ( new SingletonComponentCreateServiceFactory ( this . isInitOnStartup ( ) , dependsOn ) ) ; if ( getTransactionManagementType ( ) . equals ( CONTAINER ) ) { getConfigurators ( ) . add ( new ComponentConfigurator ( ) { @ Override public void configure ( final DeploymentPhaseContext context , final ComponentDescription description , final ComponentConfiguration configuration ) throws DeploymentUnitProcessingException { if ( ( getClassDescription ( ) . getPostConstructMethod ( ) ) != null ) { TransactionAttributeType txAttr = getTransactionAttribute ( BEAN , getClassDescription ( ) . getClassName ( ) , getClassDescription ( ) . getPostConstructMethod ( ) . getName ( ) , getClassDescription ( ) . getPostConstructMethod ( ) . getParameterTypes ( ) ) ; configuration . addPostConstructInterceptor ( new org . jboss . as . ejb3 . tx . SingletonLifecycleCMTTxInterceptorFactory ( txAttr ) , TRANSACTION_INTERCEPTOR ) ; } if ( ( getClassDescription ( ) . getPreDestroyMethod ( ) ) != null ) { TransactionAttributeType txAttr = getTransactionAttribute ( BEAN , getClassDescription ( ) . getClassName ( ) , getClassDescription ( ) . getPreDestroyMethod ( ) . getName ( ) , getClassDescription ( ) . getPreDestroyMethod ( ) . getParameterTypes ( ) ) ; <START_BUG> configuration . addPreDestroyInterceptor ( new org . jboss . as . ejb3 . tx . SingletonLifecycleCMTTxInterceptorFactory ( txAttr ) , TRANSACTION_INTERCEPTOR ) ; <END_BUG> } } } ) ; } else { getConfigurators ( ) . add ( new ComponentConfigurator ( ) { @ Override public void configure ( final DeploymentPhaseContext context , final ComponentDescription description , final ComponentConfiguration configuration ) throws DeploymentUnitProcessingException { final ComponentInstanceInterceptorFactory slsbBmtInterceptorFactory = new ComponentInstanceInterceptorFactory ( ) { @ Override protected Interceptor create ( Component component , InterceptorFactoryContext context ) { if ( ( component instanceof SingletonComponent ) == false ) { throw new IllegalArgumentException ( ( ( ( ( "Component<seq2seq4repair_space>" + component ) + "<seq2seq4repair_space>with<seq2seq4repair_space>component<seq2seq4repair_space>class:<seq2seq4repair_space>" ) + ( component . getComponentClass ( ) ) ) + "<seq2seq4repair_space>isn't<seq2seq4repair_space>a<seq2seq4repair_space>singleton<seq2seq4repair_space>component" ) ) ; } return new SingletonBMTInterceptor ( ( ( SingletonComponent ) ( component ) ) ) ; } } ; if ( ( getClassDescription ( ) . getPostConstructMethod ( ) ) != null ) { configuration . addPostConstructInterceptor ( slsbBmtInterceptorFactory , TRANSACTION_INTERCEPTOR ) ; } if ( ( getClassDescription ( ) . getPreDestroyMethod ( ) ) != null ) { configuration . addPreDestroyInterceptor ( slsbBmtInterceptorFactory , InterceptorOrder . ComponentPreDestroy . TRANSACTION_INTERCEPTOR ) ; } configuration . addComponentInterceptor ( slsbBmtInterceptorFactory , BMT_TRANSACTION_INTERCEPTOR , false ) ; } } ) ; } return singletonComponentConfiguration ; } public boolean isInitOnStartup ( ) { } public void initOnStartup ( ) { } @ Override public boolean allowsConcurrentAccess ( ) { } @ Override public SessionBeanType getSessionBeanType ( ) { } @ Override protected void setupViewInterceptors ( ViewDescription view ) { } private void addConcurrencyManagementInterceptor ( ) { } public List < ServiceName > getDependsOn ( ) { } }

Fix:
configuration . addPreDestroyInterceptor ( new org . jboss . as . ejb3 . tx . SingletonLifecycleCMTTxInterceptorFactory ( txAttr ) , InterceptorOrder . ComponentPreDestroy . TRANSACTION_INTERCEPTOR ) ;