I'm also not sure if we should really log this with warning...
if a user uses
ContextUtils.isContextActive(SessionScoped)
instead
ContextUtils.isContextActive(RequestScoped) &&
ContextUtils.isContextActive(SessionScoped)
the log always appears...
It would change it to:
ServletRequestContext requestContext = getRequestContext(true);
if (requestContext == null)
{
logger.log(Level.INFO, "Could NOT lazily initialize session
context because NO active request context");
return;
}
2016-03-02 13:37 GMT+01:00 Romain Manni-Bucau <[email protected]>:
> Hi,
>
> it looks accurate, do you want to provide us a patch?
>
> Side note: not managed threads are...not managed so any behavior in those
> threads is up to the implementation (that said a NPE is not super user
> friendly and we can do better there ;)).
>
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> | Blog
> <http://rmannibucau.wordpress.com> | Github
> <https://github.com/rmannibucau> | LinkedIn
> <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> <http://www.tomitribe.com>
>
> 2016-03-02 13:31 GMT+01:00 Karl Kildén <[email protected]>:
>
>> Hey guys!
>>
>> I upgraded to TomEE 7-M1 and I have a problem with checking for active
>> contexts. Now this behavior:
>>
>>
>> ServletRequestContext requestContext = getRequestContext(true);
>> if (requestContext == null)
>> {
>> logger.log(Level.WARNING, "Could NOT lazily initialize
>> session context because NO active request context");
>> }
>>
>> Only logs it and goes ahead and breaks on NPE on line 815 but before it
>> simply never executed any code if requestContext was null.
>>
>> This is the code in my application that actually uses Deltaspike now for
>> checking:
>>
>> private boolean isActive(Class<? extends Annotation> scope) {
>> return ContextUtils.isContextActive(scope);
>> }
>>
>>
>> Full stacktrace
>>
>> at
>> org.apache.webbeans.web.context.WebContextsService.lazyStartSessionContext(
>> *WebContextsService.java:815*)
>>
>> at
>> org.apache.webbeans.web.context.WebContextsService.getSessionContext(
>> *WebContextsService.java:739*)
>>
>> at
>> org.apache.webbeans.web.context.WebContextsService.getCurrentContext(
>> *WebContextsService.java:277*)
>>
>> at org.apache.webbeans.container.BeanManagerImpl.getContext(
>> *BeanManagerImpl.java:287*)
>>
>> at
>> org.apache.webbeans.container.InjectableBeanManager.getContext(
>> *InjectableBeanManager.java:129*)
>>
>> at
>> org.apache.deltaspike.core.util.ContextUtils.isContextActive(
>> *ContextUtils.java:60*)
>>
>> at
>> org.apache.deltaspike.core.util.ContextUtils.isContextActive(
>> *ContextUtils.java:46*)
>>
>> at com.company.ContextLookup.isActive(*ContextLookup.java:23*
>> )
>>
>>
>>
>> My actual use case is that I tag all my entities if I can find out who
>> changed it but in this case it was a background thread.
>>
>>
>> Am I missing something or should I track it in JIRA?
>>
>>
>> cheers
>>
>
>