Thanks for you answers.
Before I left we tried with @TransactionScoped and got the same exception.
With the ContextControl ctxCtrl =
BeanProvider.getContextualReference(ContextControl.class); it worked, but
it seems a huge workaround.
@MKouba: thanks for your proposed solution. I'll will try as soon as my
colleague arrive, since the code his on his machine. Btw, we use
wildfly-10.1.0.Final, if this is a bug can you open a bug?

Regards,
LA


On Mon, Apr 9, 2018 at 7:56 AM, Martin Kouba <mko...@redhat.com> wrote:

> Dne 6.4.2018 v 18:37 Luís Alves napsal(a):
>
>> Hello,
>>
>> I'm getting:
>>
>> Caused by: java.lang.RuntimeException:
>> org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active
>> contexts for scope type javax.enterprise.context.RequestScoped
>>
>> On bootstrap:
>>
>> @ApplicationScoped
>> public class BootConfig
>> {
>>      @Inject
>>      private Logger logger;
>>
>>      @Inject
>>      private ConfigRepo configRepo ;
>>
>>
>>      public void init(@Observes @Initialized(ApplicationScoped.class)
>> Object
>> init){
>>            *//There's no Request Scope here*
>>
>
> Hm, there is no guarantee that a request context is active at this point,
> i.e. during notification of this observer method.
>
> However, you could put the logic in a @PostConstruct callback of
> BootConfig (request context must be active during @PostConstruct callback
> of any bean).
>
> See also http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#request_context
>
>
>            Config c = configRepo.findByKey("my.key");
>>            //....
>>      }
>> }
>>
>> @Repository
>> public abstract class ConfigRepo extends AbstractEntityRepository<Config,
>> Long>
>> {
>>
>>      private static final QConfig c= QConfig.config;
>>
>>      public Stop findByKey(final String key)
>>      {
>>
>>          return new JPAQuery<Stop>(*entityManager()*).from(c)
>>                  .where(c.key.eq(key))
>>                  .fetchFirst();
>>      }
>>
>>
>> @ApplicationScoped
>> public class EntityManagerProducerImpl implements EntityManagerProducer
>> {
>>
>>      @PersistenceContext(unitName = "my-unit")
>>      private EntityManager entityManager;
>>
>>      @Produces
>>     * @RequestScoped*
>>      public EntityManager get()
>>      {
>>          return entityManager;
>>      }
>>      public void dispose(@Disposes @Default EntityManager entityManager)
>>      {
>>          if (entityManager.isOpen())
>>          {
>>              entityManager.close();
>>          }
>>      }
>> }
>>
>>  From the documentation you propose to use * @RequestScoped*
>> entityManager...so...what is wrong with this architecture?
>>
>> I can switch to @TransactionScoped and then annotate the init method with
>> @Transactional...I suppose it will work...but maybe is not the proper
>> approach.
>>
>> Regards,
>> LA
>>
>>
> --
> Martin Kouba
> Senior Software Engineer
> Red Hat, Czech Republic
>

Reply via email to