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 <[email protected]>: > 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
