code: @Override
      public void setRollbackOnly() {
          if (ivBMT) {
              throw new IllegalStateException("getRollbackOnly not allowed for bean managed transaction.");
          } else if (state > PRE_CREATE) {
              // We must be in PostConstruct, method ready, or PreDestroy state.
              // Have the super class do the setRollbackOnly processing. It will
              // throw IllegalStateException if method TX attribute
              // caused method to be invoked without a global TX.
              super.setRollbackOnly();
          } else {
              throw new IllegalStateException("setRollbackOnly operation not allowed in current state: " + StateStrs[state]);
          }
      }
docs: For Singleton objects, setRollbackOnly is allowed once we are past
  dependency injection (PRE_CREATE state) and there is a valid TX context
  (e.g. the method being invoked has one of NotSupported, Supports or
  Never as its transaction attribute).
  
  @see com.ibm.ejs.container.BeanO#setRollbackOnly()