Tomcat HTTP状态500-oracle.adfinternal.controller.faces.context.StubJSFPageLifecycleContext无法强制转换为

Tomcat HTTP状态500-oracle.adfinternal.controller.faces.context.StubJSFPageLifecycleContext无法强制转换为,tomcat,oracle-adf,jdeveloper,Tomcat,Oracle Adf,Jdeveloper,我们正在使用Oracle ADF(jdeveloper 11.1.2.4)开发web应用程序。我们需要在tomcat6.x上运行这些应用程序。我们已经使用post设置了tomcat6.x环境 我们只能在tomcat上运行一个应用程序。这意味着,如果我们只部署一个应用程序,它将在浏览器上成功运行,并且一切正常。每当我们试图部署多个应用程序时,tomcat服务器控制台上都不会出现异常 但是,当我们试图打开任何页面时,它会给出以下错误 HTTP Status 500 - oracle.adfinter

我们正在使用Oracle ADF(jdeveloper 11.1.2.4)开发web应用程序。我们需要在tomcat6.x上运行这些应用程序。我们已经使用post设置了tomcat6.x环境

我们只能在tomcat上运行一个应用程序。这意味着,如果我们只部署一个应用程序,它将在浏览器上成功运行,并且一切正常。每当我们试图部署多个应用程序时,tomcat服务器控制台上都不会出现异常

但是,当我们试图打开任何页面时,它会给出以下错误

HTTP Status 500 - oracle.adfinternal.controller.faces.context.StubJSFPageLifecycleContext cannot be cast to oracle.adf.controller.faces.context.FacesPageLifecycleContext
exception

java.lang.ClassCastException: oracle.adfinternal.controller.faces.context.StubJSFPageLifecycleContext cannot be cast to oracle.adf.controller.faces.context.FacesPageLifecycleContext
    oracle.adfinternal.controller.application.model.UpdateBindingListener.beforePhase(UpdateBindingListener.java:66)
    oracle.adfinternal.controller.lifecycle.ADFLifecycleImpl$PagePhaseListenerWrapper.beforePhase(ADFLifecycleImpl.java:550)
    oracle.adfinternal.controller.lifecycle.LifecycleImpl.internalDispatchBeforeEvent(LifecycleImpl.java:100)
    oracle.adfinternal.controller.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:191)
    oracle.adfinternal.controller.faces.lifecycle.ADFPhaseListener.access$200(ADFPhaseListener.java:23)
    oracle.adfinternal.controller.faces.lifecycle.ADFPhaseListener$PhaseInvokerImpl.startPageLifecycle(ADFPhaseListener.java:232)
    oracle.adfinternal.controller.faces.lifecycle.ADFPhaseListener$1.after(ADFPhaseListener.java:274)
    oracle.adfinternal.controller.faces.lifecycle.ADFPhaseListener.afterPhase(ADFPhaseListener.java:75)
    oracle.adfinternal.controller.faces.lifecycle.ADFLifecyclePhaseListener.afterPhase(ADFLifecyclePhaseListener.java:53)
    oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:447)
    oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:202)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:508)
    oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:173)
    oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:125)
    org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:468)
    oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
    org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:468)
    org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:293)
    org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:199)
    org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)

请帮助我们。我们必须在tomcat 6.x上部署并成功运行多个adf应用程序。

可能与此处发布的问题相同:

简言之,正确答案是:

我不能肯定,但这听起来像你有相同的图书馆 放置在web应用程序库文件夹和Tomcat common中 图书馆目录。根据您放置这些库的位置,它们 将由应用程序类加载器或父Tomcat加载 类加载器。换句话说,我相信你们有一个图书馆 由webapplication的lib文件夹加载,而不是将其加载到 父类加载器。 -弗洛林


我注意到,由于
FacesInitializer
(SCI
ServletContainerInitializer
)作为Tomcat根加载器的一部分被加载,这个异常也将/可能出现在Tomcat 9+上。这将“混淆”ADF Faces应用程序,导致ClassCastException


一个可能的修复方法是进入
jsf impl
并注释掉
META-INF/services/javax.servlet.ServletContainerInitializer
的内容,或者删除整个文件。

@Abdul您现在一定非常讨厌Tomcat:)嗯。但是我们的客户希望将此应用程序部署到Tomcat上。你能推荐其他服务器吗(应该是免费的)?你只需要把你的库整理好(如果你的问题与OTN主题中描述的问题相同),我只有一个地方有库。这在Tomcat/lib文件夹中。我的war文件不包含库。你可以尝试免费的GlassFish 3.1-这是ADF Essentials实际认证的服务器。