is it possible to detect a CDI managed bean's scope at runtime?
You can inject the BeanManager and query your bean definition:
@Inject
BeanManager beanManager;
...
Class<? extends Annotation> scope = beanManager.getBeans(MyClass.class,MyOptionalQualifier1.class).iterator().next().getScope();
if(scope.isAssignableFrom(RequestScoped.class))
...