2

我正在使用 IBM Websphere 8.0。我们正在尝试使用打包在 JAR 中的所有 CDI bean 直接在 ear 文件中创建 ear 存档。战争清单列出了打包的 jar 的名称。

我的问题是我看到了这个堆栈跟踪,即使应用程序似乎已经工作了

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 这样的 Classloader 层次结构,有人可以给我一些启发,甚至可以指导我阅读任何关于 CDI 和 Classloader 的文章。

我的应用程序正在为应用程序使用 PARENT_FIRST 类加载,其战争类加载器策略为 PARENT_FIRST 和每个战争的类加载器。任何帮助将不胜感激

4

0 回答 0