Em um projeto estou utilizando o componente "demoiselle-scheduler-quartz". Neste projeto várias threads são disparadas e executadas concorrentemente.
O componente "demoiselle-scheduler-quartz" injeta os contextos do Demoiselle (RequestContext, SessionContext, ViewContext, ConversationContext), ativa-os, invoca a execução da tarefa e desativa-os. Mas esporadicamente ocorre ContextNotActiveException.
Olhando o código fonte do Demoiselle observei a classe "br.gov.frameworkdemoiselle.internal.context.AbstractCustomContext":
1public abstract class AbstractCustomContext implements CustomContext {
2
3 private boolean active;
4 ...
5}
e comparei com a classe "org.jboss.weld.context.AbstractManagedContext":
1public abstract class AbstractManagedContext extends AbstractContext implements ManagedContext {
2
3 private final ThreadLocal<Boolean> active;
4 ...
5}
Não sei se a implementação foi intencional ou um bug, mas existe alguma forma de tornar a RequestContext thread-safe?
Tentei implementar uma @Alternative RequestContext, mas sempre é injetada a "br.gov.frameworkdemoiselle.internal.context.TemporaryRequestContextImpl".
Também tentei definir um método @Produces RequesteContext, mas também não funcionou.