Buggy code:
public class SingletonComponentDescription extends SessionBeanComponentDescription { private boolean initOnStartup ; private final List < ServiceName > dependsOn = new ArrayList < ServiceName > ( ) ; private DefaultAccessTimeoutService defaultAccessTimeoutProvider ; public SingletonComponentDescription ( final String componentName , final String componentClassName , final EjbJarDescription ejbJarDescription , final ServiceName deploymentUnitServiceName ) { } @ Override public ComponentConfiguration createConfiguration ( final ClassIndex classIndex , final ClassLoader moduleClassLoder ) { ComponentConfiguration singletonComponentConfiguration = new ComponentConfiguration ( this , classIndex , moduleClassLoder ) ; 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 { configuration . addPostConstructInterceptor ( new org . jboss . as . ejb3 . tx . SingletonLifecycleCMTTxInterceptor . Factory ( TransactionAttributeType . REQUIRES_NEW ) , TRANSACTION_INTERCEPTOR ) ; configuration . addPreDestroyInterceptor ( new org . jboss . as . ejb3 . tx . SingletonLifecycleCMTTxInterceptor . Factory ( TransactionAttributeType . REQUIRES_NEW ) , InterceptorOrder . ComponentPreDestroy . TRANSACTION_INTERCEPTOR ) ; <START_BUG> configuration . addTimeoutInterceptor ( FACTORY , TIMEOUT_CMT_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 EjbMessages . MESSAGES . componentNotSingleton ( component , component . getComponentClass ( ) ) ; } return new StatelessBMTInterceptor ( ( ( SingletonComponent ) ( component ) ) ) ; } } ; configuration . addPostConstructInterceptor ( slsbBmtInterceptorFactory , TRANSACTION_INTERCEPTOR ) ; configuration . addPreDestroyInterceptor ( slsbBmtInterceptorFactory , InterceptorOrder . ComponentPreDestroy . TRANSACTION_INTERCEPTOR ) ; configuration . addComponentInterceptor ( slsbBmtInterceptorFactory , BMT_TRANSACTION_INTERCEPTOR , false ) ; configuration . addTimeoutInterceptor ( slsbBmtInterceptorFactory , BMT_TRANSACTION_INTERCEPTOR ) ; } } ) ; } return singletonComponentConfiguration ; } public boolean isInitOnStartup ( ) { } public void initOnStartup ( ) { } @ Override public boolean allowsConcurrentAccess ( ) { } @ Override public SessionBeanType getSessionBeanType ( ) { } @ Override protected void setupViewInterceptors ( EJBViewDescription view ) { } @ Override protected ViewConfigurator getSessionBeanObjectViewConfigurator ( ) { } private void addConcurrencyManagementInterceptor ( ) { } public List < ServiceName > getDependsOn ( ) { } @ Override public boolean isTimerServiceApplicable ( ) { } }

Fix:
configuration . addTimeoutInterceptor ( FACTORY , COMPONENT_CMT_INTERCEPTOR ) ;