I still didn't tested it...but I was hoping that @Observes
@Initialized(ApplicationScoped.class)
was executed after  @PostConstruct

1st: @PostConstruct

2nd: public void init(@Observes @Initialized(ApplicationScoped.class)
Object init)

isn't this the case? Why on @PostConstruct we have scope and not at
@Observes @Initialized(ApplicationScoped.class)? - @Inject(ed) beans are
available here

LA

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

> Dne 9.4.2018 v 09:33 Luís Alves napsal(a):
>
>> 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?
>>
>
> It does not seem to be a bug.
>
>
>> Regards,
>> LA
>>
>>
>>
>> On Mon, Apr 9, 2018 at 7:56 AM, Martin Kouba <mko...@redhat.com <mailto:
>> 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
>>     <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
>>
>>
>>
> --
> Martin Kouba
> Senior Software Engineer
> Red Hat, Czech Republic
>

Reply via email to