我正在使用IBM Websphere 8.0。我们正在尝试使用JAR中直接在ear文件中打包的所有CDI bean创建ear存档。战争清单列出了包装的罐子的名称。
我的问题是我看到了这个堆栈跟踪,即使应用程序似乎已经有效了
Caused by: javax.enterprise.context.ContextNotActiveException: WebBeans context with scope type annotation @RequestScoped does not exist within current thread
at org.apache.webbeans.container.BeanManagerImpl.getContext(BeanManagerImpl.java:321)
at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.getContextualInstance(NormalScopedBeanInterceptorHandler.java:124)
at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:95)
at org.apache.webbeans.conversation.ConversationImpl_$$_javassist_0.isTransient(ConversationImpl_$$_javassist_0.java)
at org.apache.webbeans.jsf.WebBeansPhaseListener.beforePhase(WebBeansPhaseListener.java:93)
at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersBefore(PhaseListenerManager.java:76)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:159)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)
我很难理解它。一旦我将jar移回WEB-INF / lib,应用程序就可以在SystemOut日志中没有此堆栈跟踪的情况下再次正常工作。如果像IBM这样的类加载器层次结构,有人可以提供一些说明,甚至可以直接指向CDI和Classloader上的任何文章。
我的应用程序使用PARENT_FIRST类加载应用程序,使用PARENT_FIRST的war类加载器策略和每次war的类加载器。非常感谢任何帮助