You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@deltaspike.apache.org by Dessie K <de...@gmail.com> on 2016/07/05 13:00:10 UTC

Fwd: IllegalStateException: There is no ServletContext stored for class loader: com.ibm.ws.classloading.internal.ThreadContextClassLoader

Hi,

I'm hitting the following exception Injecting the ServletContext using the
DeltaSpike Servlet module 1.7.0 on WebSphere Liberty

Product name: WebSphere Application Server
Product version: 8.5.5.6
Product edition: BASE_ILAN


*Bean*:

@ApplicationScoped
public class AppConfig {

    @Inject
    @DeltaSpike
    private ServletContext servletContext;

    @PostConstruct
    public void init() {
        System.out.println("ServletContext: " +
servletContext.getServletContextName());
    }

    @Produces
    @Logger
    public Logger getLogger(InjectionPoint injectionPoint) {
        Logger logger =
Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName());
        return logger;
    }
}


*Exception*:

Exception = java.lang.IllegalStateException
Source = com.ibm.wsspi.injectionengine.InjectionBinding.getInjectionObject
probeid = 408
Stack Dump = java.lang.IllegalStateException: There is no ServletContext
stored for class loader:
com.ibm.ws.classloading.internal.ThreadContextClassLoader@4c87f45
        at
org.apache.deltaspike.servlet.impl.produce.ServletContextHolder.get(ServletContextHolder.java:76)
        at
org.apache.deltaspike.servlet.impl.produce.ServletObjectProducer.getServletContext(ServletObjectProducer.java:56)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at
org.apache.webbeans.inject.InjectableMethods.doInjection(InjectableMethods.java:145)
        at
org.apache.webbeans.component.ProducerMethodBean.createDefaultInstance(ProducerMethodBean.java:150)
        at
org.apache.webbeans.component.ProducerMethodBean.createInstance(ProducerMethodBean.java:115)
        at
org.apache.webbeans.component.AbstractOwbBean.createNewInstance(AbstractOwbBean.java:233)
        at
org.apache.webbeans.portable.creation.AbstractProducer.produce(AbstractProducer.java:79)
        at
org.apache.webbeans.component.InjectionTargetWrapper.produce(InjectionTargetWrapper.java:133)
        at
org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:180)
        at
org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:70)
        at
org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:144)
        at
org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:862)
        at
org.apache.webbeans.container.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:742)
        at
org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.java:136)
        at
org.apache.webbeans.inject.InjectableField.doInjection(InjectableField.java:59)
        at
org.apache.webbeans.component.AbstractInjectionTargetBean.injectField(AbstractInjectionTargetBean.java:387)
        at
org.apache.webbeans.component.AbstractInjectionTargetBean.injectFields(AbstractInjectionTargetBean.java:324)
        at
org.apache.webbeans.portable.creation.InjectionTargetProducer.inject(InjectionTargetProducer.java:95)
        at
org.apache.webbeans.component.InjectionTargetWrapper.inject(InjectionTargetWrapper.java:76)
        at
org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:181)
        at
org.apache.webbeans.context.creational.BeanInstanceBag.create(BeanInstanceBag.java:81)
        at
org.apache.webbeans.context.AbstractContext.getInstance(AbstractContext.java:179)
        at
org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:144)
        at
org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.getContextualInstance(NormalScopedBeanInterceptorHandler.java:154)
        at
org.apache.webbeans.intercept.ApplicationScopedBeanInterceptorHandler.getContextualInstance(ApplicationScopedBeanInterceptorHandler.java:70)
        at
org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:114)
        at
org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:108)
        at
com.mycompany.AppConfig_$$_javassist_34.getLogger(AppConfig_$$_javassist_34.java)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at
org.apache.webbeans.inject.InjectableMethods.doInjection(InjectableMethods.java:145)
        at
org.apache.webbeans.component.ProducerMethodBean.createDefaultInstance(ProducerMethodBean.java:150)
        at
org.apache.webbeans.component.ProducerMethodBean.createInstance(ProducerMethodBean.java:115)
        at
org.apache.webbeans.component.AbstractOwbBean.createNewInstance(AbstractOwbBean.java:233)
        at
org.apache.webbeans.portable.creation.AbstractProducer.produce(AbstractProducer.java:79)
        at
org.apache.webbeans.component.InjectionTargetWrapper.produce(InjectionTargetWrapper.java:133)
        at
org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:180)
        at
org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:70)
        at
org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:144)
        at
org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:862)
        at
org.apache.webbeans.container.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:742)
        at
org.apache.webbeans.container.InjectableBeanManager.getInjectableReference(InjectableBeanManager.java:136)
        at
com.ibm.ws.webbeans.services.InjectInjectionObjectFactory.getInjectableReference(InjectInjectionObjectFactory.java:307)
        at
com.ibm.ws.webbeans.services.InjectInjectionObjectFactory.getObjectInstance(InjectInjectionObjectFactory.java:139)
        at
com.ibm.ws.webbeans.services.InjectInjectionBinding.getInjectionObjectInstance(InjectInjectionBinding.java:70)
        at
com.ibm.wsspi.injectionengine.InjectionBinding.getInjectionObject(InjectionBinding.java:1434)
        at
com.ibm.wsspi.injectionengine.InjectionBinding.getInjectableObject(InjectionBinding.java:1374)
        at
com.ibm.wsspi.injectionengine.InjectionTarget.inject(InjectionTarget.java:115)
        at
com.ibm.ws.injectionengine.AbstractInjectionEngine.inject(AbstractInjectionEngine.java:842)
        at
com.ibm.ejs.container.ManagedBeanOBase.injectInstance(ManagedBeanOBase.java:142)
        at
com.ibm.ejs.container.SingletonBeanO.initialize(SingletonBeanO.java:302)
        at com.ibm.ejs.container.BeanOFactory.create(BeanOFactory.java:105)
        at
com.ibm.ejs.container.EJSHome.createSingletonBeanO(EJSHome.java:3738)

Re: IllegalStateException: There is no ServletContext stored for class loader: com.ibm.ws.classloading.internal.ThreadContextClassLoader

Posted by Rafael Pestano <rm...@gmail.com>.
Looks like CDI container is started before servlet container.

A possible solution would be to inject this bean on a servlet context
listener and set the information you need on this bean. Or maybe inject an
Instance of ServletContext and get it later (not in @PostConstruct).

Maybe it hekps.

2016-07-05 10:00 GMT-03:00 Dessie K <de...@gmail.com>:

> Hi,
>
> I'm hitting the following exception Injecting the ServletContext using the
> DeltaSpike Servlet module 1.7.0 on WebSphere Liberty
>
> Product name: WebSphere Application Server
> Product version: 8.5.5.6
> Product edition: BASE_ILAN
>
>
> *Bean*:
>
> @ApplicationScoped
> public class AppConfig {
>
>     @Inject
>     @DeltaSpike
>     private ServletContext servletContext;
>
>     @PostConstruct
>     public void init() {
>         System.out.println("ServletContext: " +
> servletContext.getServletContextName());
>     }
>
>     @Produces
>     @Logger
>     public Logger getLogger(InjectionPoint injectionPoint) {
>         Logger logger =
> Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName());
>         return logger;
>     }
> }
>
>
> *Exception*:
>
> Exception = java.lang.IllegalStateException
> Source = com.ibm.wsspi.injectionengine.InjectionBinding.getInjectionObject
> probeid = 408
> Stack Dump = java.lang.IllegalStateException: There is no ServletContext
> stored for class loader:
> com.ibm.ws.classloading.internal.ThreadContextClassLoader@4c87f45
>         at
>
> org.apache.deltaspike.servlet.impl.produce.ServletContextHolder.get(ServletContextHolder.java:76)
>         at
>
> org.apache.deltaspike.servlet.impl.produce.ServletObjectProducer.getServletContext(ServletObjectProducer.java:56)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at
>
> org.apache.webbeans.inject.InjectableMethods.doInjection(InjectableMethods.java:145)
>         at
>
> org.apache.webbeans.component.ProducerMethodBean.createDefaultInstance(ProducerMethodBean.java:150)
>         at
>
> org.apache.webbeans.component.ProducerMethodBean.createInstance(ProducerMethodBean.java:115)
>         at
>
> org.apache.webbeans.component.AbstractOwbBean.createNewInstance(AbstractOwbBean.java:233)
>         at
>
> org.apache.webbeans.portable.creation.AbstractProducer.produce(AbstractProducer.java:79)
>         at
>
> org.apache.webbeans.component.InjectionTargetWrapper.produce(InjectionTargetWrapper.java:133)
>         at
>
> org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:180)
>         at
>
> org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:70)
>         at
> org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:144)
>         at
>
> org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:862)
>         at
>
> org.apache.webbeans.container.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:742)
>         at
>
> org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.java:136)
>         at
>
> org.apache.webbeans.inject.InjectableField.doInjection(InjectableField.java:59)
>         at
>
> org.apache.webbeans.component.AbstractInjectionTargetBean.injectField(AbstractInjectionTargetBean.java:387)
>         at
>
> org.apache.webbeans.component.AbstractInjectionTargetBean.injectFields(AbstractInjectionTargetBean.java:324)
>         at
>
> org.apache.webbeans.portable.creation.InjectionTargetProducer.inject(InjectionTargetProducer.java:95)
>         at
>
> org.apache.webbeans.component.InjectionTargetWrapper.inject(InjectionTargetWrapper.java:76)
>         at
>
> org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:181)
>         at
>
> org.apache.webbeans.context.creational.BeanInstanceBag.create(BeanInstanceBag.java:81)
>         at
>
> org.apache.webbeans.context.AbstractContext.getInstance(AbstractContext.java:179)
>         at
> org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:144)
>         at
>
> org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.getContextualInstance(NormalScopedBeanInterceptorHandler.java:154)
>         at
>
> org.apache.webbeans.intercept.ApplicationScopedBeanInterceptorHandler.getContextualInstance(ApplicationScopedBeanInterceptorHandler.java:70)
>         at
>
> org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:114)
>         at
>
> org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:108)
>         at
>
> com.mycompany.AppConfig_$$_javassist_34.getLogger(AppConfig_$$_javassist_34.java)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at
>
> org.apache.webbeans.inject.InjectableMethods.doInjection(InjectableMethods.java:145)
>         at
>
> org.apache.webbeans.component.ProducerMethodBean.createDefaultInstance(ProducerMethodBean.java:150)
>         at
>
> org.apache.webbeans.component.ProducerMethodBean.createInstance(ProducerMethodBean.java:115)
>         at
>
> org.apache.webbeans.component.AbstractOwbBean.createNewInstance(AbstractOwbBean.java:233)
>         at
>
> org.apache.webbeans.portable.creation.AbstractProducer.produce(AbstractProducer.java:79)
>         at
>
> org.apache.webbeans.component.InjectionTargetWrapper.produce(InjectionTargetWrapper.java:133)
>         at
>
> org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:180)
>         at
>
> org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:70)
>         at
> org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:144)
>         at
>
> org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:862)
>         at
>
> org.apache.webbeans.container.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:742)
>         at
>
> org.apache.webbeans.container.InjectableBeanManager.getInjectableReference(InjectableBeanManager.java:136)
>         at
>
> com.ibm.ws.webbeans.services.InjectInjectionObjectFactory.getInjectableReference(InjectInjectionObjectFactory.java:307)
>         at
>
> com.ibm.ws.webbeans.services.InjectInjectionObjectFactory.getObjectInstance(InjectInjectionObjectFactory.java:139)
>         at
>
> com.ibm.ws.webbeans.services.InjectInjectionBinding.getInjectionObjectInstance(InjectInjectionBinding.java:70)
>         at
>
> com.ibm.wsspi.injectionengine.InjectionBinding.getInjectionObject(InjectionBinding.java:1434)
>         at
>
> com.ibm.wsspi.injectionengine.InjectionBinding.getInjectableObject(InjectionBinding.java:1374)
>         at
>
> com.ibm.wsspi.injectionengine.InjectionTarget.inject(InjectionTarget.java:115)
>         at
>
> com.ibm.ws.injectionengine.AbstractInjectionEngine.inject(AbstractInjectionEngine.java:842)
>         at
>
> com.ibm.ejs.container.ManagedBeanOBase.injectInstance(ManagedBeanOBase.java:142)
>         at
> com.ibm.ejs.container.SingletonBeanO.initialize(SingletonBeanO.java:302)
>         at com.ibm.ejs.container.BeanOFactory.create(BeanOFactory.java:105)
>         at
> com.ibm.ejs.container.EJSHome.createSingletonBeanO(EJSHome.java:3738)
>



-- 
Att,

Rafael M. Pestano

Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul
http://rpestano.wordpress.com/
@realpestano