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