Fórum

« Voltar

RequestContext em cenário de concorrência

Visualização combinada Visão plana Exibição em árvore
Tópicos [ Anterior | Próximo ]
RequestContext em cenário de concorrência
concorrência thread
Resposta
11/10/16 16:22
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.