You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法解决Glassfish部署JDeveloper开发的ADF应用时的错误

解决ADF应用部署到Glassfish 5.0.1的错误方案

Hey,我之前处理过类似的ADF部署到Glassfish的问题,针对你遇到的 oracle.jbo.mom.DefObjectEventManager 相关的SEVERE级错误,结合你已经完成的操作,给你几个针对性的排查和修复步骤:

1. 确认ADF Essential包的正确性

  • 你已经把adf-essential.zip放到域的lib文件夹,但要注意:必须用JDeveloper 12.2.1.2安装目录下的对应包(路径一般是$JDEV_HOME/oracle_common/modules/oracle.adf),版本要和应用编译版本完全匹配,不能混用其他版本的包。
  • 不要直接放zip文件,要解压整个zip到域的lib目录,确保所有ADF相关jar都能被Glassfish加载。

2. 验证JVM选项的完整配置

ADF依赖特定的JVM参数,检查你添加的选项是否包含以下关键项:

-Doracle.mds.cache=simple
-Djavax.xml.soap.MessageFactory=oracle.j2ee.ws.saaj.soap.MessageFactoryImpl
-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy
-Doracle.adf.share.http.context=oracle.adf.share.http.ServletADFContext
-Xmx2048m -Xms1024m

最后两个堆内存参数是为了避免内存不足引发的类加载异常,建议加上。

3. 调整EAR包的部署描述符

  • 打开生成的EAR包,删除WebLogic专属的配置(比如weblogic-application.xml里的WebLogic特有参数),避免Glassfish加载时出错。
  • 添加Glassfish专属的配置文件glassfish-application.xml,内容如下:
<glassfish-application xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="7">
    <class-loader delegate="false"/>
    <property name="oracle.jbo.server.lazyloading" value="true"/>
</glassfish-application>

4. 排查类加载冲突问题

oracle.jbo.mom.DefObjectEventManager 的错误大多是类加载异常导致的:

  • 检查Glassfish域的lib目录,看是否存在重复或版本不一致的ADF jar包(比如不同版本的oracle.adf.model_*.jar),如果有,删除重复的旧版本。
  • 查看Glassfish的完整日志,找是否有ClassNotFoundException或NoClassDefFoundError,这会直接告诉你缺失的jar包。

5. 重新编译打包部署

有时候缓存会坑人,建议:

  • 在JDeveloper中执行Build -> Clean All,清理所有项目缓存后重新编译生成EAR包。
  • 部署前删除Glassfish域中已有的旧应用文件(路径一般是$GLASSFISH_HOME/glassfish/domains/你的域名/applications/你的应用名),避免旧文件干扰。

内容的提问来源于stack exchange,提问作者Ritesh Lad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:23:16