java - 尝试将 Oracle-ADF 应用程序部署到 Tomcat 7

标签 java oracle tomcat tomcat7 oracle-adf

我正在尝试将 oracle-adf 应用程序部署到 Tomcat 7。我做了很多事情,但最后,我得到了以下异常。有什么建议 ? 【使用jdev studio,版本11.1.2.4;在没有模型部分(没有数据库交互)的情况下成功运行应用程序]

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:593)
    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)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

最佳答案

虽然 yilmazbahadirs 的回答有效 - 它不是真正的解决方案。所以我进一步搜索并找到了以下博客:byte bohemian

结果本质上是 - 您必须通过共享类加载器加载共享的 ADF 库,而不是像旧的 Oracle 博客帖子所说的那样将它们放入 tomcat/lib 文件夹中。我现在终于在 Tomcat8 上启动并运行了 ADF - 但也通过以下过程在 6 和 7 上进行了测试:

  1. 在您的 tomcat 目录 (CATALINA_BASE) 中创建一个名为 shared-lib 的新文件夹.编辑文件 config/catalina.properties并搜索带有 shared.loader=... 的行,将其更改为以下内容: shared.loader="${catalina.base}/shared-lib","${catalina.base}/shared-lib/*.jar","${catalina.home}/shared-lib","${catalina.home}/shared-lib/*.jar"当所有共享库都在该文件夹中时,这将告诉 Tomcat 使用单独的类加载器加载这些文件并解决您的问题。

  2. 下载ADF-essentials ZIP解压到shared-lib (你必须将它们解压缩!!!所以所有子目录中的所有 JAR 文件都应该直接位于没有任何子目录的文件夹中)

  3. 将包含所有依赖库的 ADF 应用程序部署为 EAR 文件,并将所有 JAR 文件从 EAR 文件复制到 shared-lib 文件夹。

  4. 检查重复的 JAR - log4j 对我来说总是有两个版本,如果您发现重复的,只保留较新的。

  5. 下载GlassFish Server并将以下文件从 glassfish/modules 复制到 shared-lib 文件夹中:

    bean-validator.jar javax.mail-1.4.4.jar javax.servlet.jsp.jstl.jar javax.servlet.jsp.jstl-api.jar javax.transaction.jar

  6. 添加ojdbc7.jartomcat/lib (不是共享库)

  7. 在启动时向 Tomcat 添加以下环境选项(例如在 setenv.sh/setenv.bat 中):CATALINA_OPTS=-Doracle.mds.cache=simple

  8. (可选)如果你想要@PreDestroy注释工作而不会引发错误并使用 TomCat 7 或 8,您必须注册一个自定义监听器,它将处理这些注释,因为 Oracle 尝试访问 PreDestroy 中的 session ,而 Tomcat 坚持 stupid 官方标准并在调用 PreDestroy 之前使 session 无效: 您必须将以下 JAR 文件(包括源代码)复制到您的 shared-lib文件夹:adf-predestroy-helper.jar并在 WEB_INF/web.xml 中注册每个 ADF 应用程序都是这样的:

<listener> <listener-class>oracle.adf.PreDestroyHelper</listener-class> </listener>

PreDestroy 监听器由我编写并在 CreativeCommons 许可下发布 OpenSource,因此您可以随心所欲地使用它,但我很乐意提供一些反馈。


供引用 - 这是我的 shared-lib 文件夹的样子(160 个文件):

adf-businesseditor-model.jar
adf-businesseditor-objects.jar
adf-businesseditor-settings.jar
adf-controller-api.jar
adf-controller-rt-common.jar
adf-controller-schema.jar
adf-controller-security.jar
adf-controller.jar
adf-customizationset-ui.jar
adf-dt-at-rt-wizards.jar
adf-dt-at-rt.jar
adf-dynamic-faces.jar
adf-faces-changemanager-rt.jar
adf-faces-databinding-dt-core.jar
adf-faces-databinding-rt.jar
adf-faces-registration.jar
adf-faces-templating-dt-core.jar
adf-faces-templating-dtrt.jar
adf-loc.jar
adf-mobile-schema.jar
adf-pageflow-dtrt.jar
adf-pageflow-fwk.jar
adf-pageflow-impl.jar
adf-pageflow-rc.jar
adf-predestroy-helper.jar
adf-richclient-api-11.jar
adf-richclient-automation-11.jar
adf-richclient-bootstrap.jar
adf-richclient-impl-11.jar
adf-richclient-jmx.jar
adf-richclient-skin-editor.jar
adf-richclient-skin-repository.jar
adf-sec-idm-dc.jar
adf-share-base.jar
adf-share-ca.jar
adf-share-glassfish.jar
adf-share-security.jar
adf-share-support.jar
adf-share-web.jar
adf-stringeditor-api.jar
adf-view-databinding-dt-core.jar
adf-view-unified-databinding-dt-core.jar
adf.constants.jar
adfbcsvc-client.jar
adfbcsvc-registration.jar
adfbcsvc-share.jar
adfbcsvc.jar
adfdt_common.jar
adflibfilter.jar
adflibrary.jar
adflogginghandler.jar
adfm-debugger.jar
adfm-sqldc.jar
adfm.jar
adfmportlet.jar
adfmweb.jar
adfsharembean.jar
adftags.jar
adftransactionsdt.jar
batik-anim.jar
batik-awt-util.jar
batik-bridge.jar
batik-codec.jar
batik-css.jar
batik-dom.jar
batik-ext.jar
batik-extension.jar
batik-gui-util.jar
batik-gvt.jar
batik-parser.jar
batik-script.jar
batik-svg-dom.jar
batik-svggen.jar
batik-swing.jar
batik-transcoder.jar
batik-util.jar
batik-xml.jar
bc4j-mbeans.jar
bc4jhtml.jar
bc4jimdomains.jar
bc4jsyscat.jar
bean-validator.jar
bundleresolver.jar
com.bea.core.apache.commons.collections_1.0.0.0_3-2.jar
com.oracle.classloader.pcl_12.1.3.jar
com.oracle.http_client.http_client_12.1.3.jar
com.oracle.jrf.j2ee.web-common-schemas_12.1.3.jar
com.oracle.ojsp.globaltldcache_12.1.3.jar
com.oracle.ojsp.ojsp_12.1.3.jar
com.oracle.ojsp.web-common_12.1.3.jar
com.oracle.webservices.fmw.oc4j-ws-support-impl_12.1.3.jar
commons-el.jar
datatags.jar
db-ca.jar
dms.jar
dvt-as.jar
dvt-basemaps.jar
dvt-databinding-dt-core.jar
dvt-databindings-mds.jar
dvt-databindings.jar
dvt-faces.jar
dvt-facesbindings.jar
dvt-jclient-adf.jar
dvt-jclient.jar
dvt-shared-js.jar
dvt-trinidad.jar
dvt-utils.jar
facesconfigmodel.jar
groovy-all-2.1.6.jar
inspect4.jar
javamodel-rt.jar
javatools-nodeps.jar
javax.mail-1.4.4.jar
javax.servlet.jsp.jstl-api.jar
javax.servlet.jsp.jstl.jar
javax.transaction.jar
jdev-cm.jar
jewt4.jar
jmxdc.jar
jr_dav.jar
jrf-api.jar
jsf-api.jar
jsf-impl.jar
jsp-el-api.jar
mds-dc.jar
mdsrt.jar
mobile-repository.jar
oicons.jar
ojdbc6dms.jar
ojdl.jar
ojdl2.jar
oracle-el.jar
oracle.logging-utils_12.1.3.jar
oracle.xdb_12.1.0.jar
oraclexsql.jar
orai18n-mapping.jar
ordhttp.jar
ordim.jar
org.apache.bcel_5.1.jar
org.apache.commons.beanutils_1.8.3.jar
org.apache.commons.logging_1.1.1.jar
org.apache.http.components.httpclient-4.1.2.jar
org.apache.http.components.httpclient-cache-4.1.2.jar
org.apache.http.components.httpcore-4.1.2.jar
org.apache.http.components.httpmime-4.1.2.jar
prefuse.jar
rcs-adflib-rt.jar
rcsrt.jar
regexp.jar
resourcebundle.jar
share.jar
taglib.jar
trinidad-api.jar
trinidad-impl.jar
velocity-dep-1.4.jar
weld-integration.jar
xml-apis-ext.jar
xmlef.jar
xmlparserv2_sans_jaxp_services.jar
xsqlserializers.jar

这是标准的 tomcat/lib 文件夹(25 个文件):

annotations-api.jar
catalina-ant.jar
catalina-ha.jar
catalina-storeconfig.jar
catalina-tribes.jar
catalina.jar
ecj-4.4.2.jar
el-api.jar
jasper-el.jar
jasper.jar
jsp-api.jar
ojdbc7.jar
servlet-api.jar
tomcat-api.jar
tomcat-coyote.jar
tomcat-dbcp.jar
tomcat-i18n-es.jar
tomcat-i18n-fr.jar
tomcat-i18n-ja.jar
tomcat-jdbc.jar
tomcat-jni.jar
tomcat-util-scan.jar
tomcat-util.jar
tomcat-websocket.jar
websocket-api.jar

关于java - 尝试将 Oracle-ADF 应用程序部署到 Tomcat 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21628887/

相关文章:

java - 在 Tomcat 8 上启用 HTTPS 时出现问题

java - "java.net.BindException: Address already in use"错误的解决方法?

java - OSX 10.9.1 : "Tomcat started." localhost:8080 says "no data received"

java - 在 ignite 中启用身份验证

java - Karaf/Maven - 无法解析 : missing requirement osgi. 接线包

java - 配置 Tomcat/Catalina 以在端口 80 上以根目录为应用程序提供服务

Oracle 12c 内联 View 评估

oracle - 使用前缀为查询中的所有列别名

java - Selenium -- 在浏览 Web 应用程序时,如何处理驱动程序当前 url 未快速更新的情况

.net - 最新的 Oracle Data Provider for .NET (11.2.0.3.20) 破坏了 EF 更新向导