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

WAS 8.5.5 EJB lookup抛出InvalidObjectException是否需重生成部署代码?

原始异常

com.ibm.ws.naming.util.InvalidObjectException: Some object reference in the name "MyEJB" relative to the context "path/to/myserver" is invalid. 
Some possible causes include a context binding in the name which refers to a destroyed context, or an object binding which contains an invalid EJBHome reference.
[Root exception is org.omg.CORBA.INV_OBJREF: Could not resolve IOR string. vmcid: 0x0 minor code: 0 completed: No]

异常翻译

com.ibm.ws.naming.util.InvalidObjectException:上下文path/to/myserver下名称为MyEJB的部分对象引用无效。
可能的原因包括:名称对应的上下文绑定指向已销毁的上下文,或者对象绑定包含无效的EJBHome引用。
[根异常为org.omg.CORBA.INV_OBJREF:无法解析IOR字符串。vmcid: 0x0 次要代码: 0 执行状态:未完成]

问题场景

  • 同一应用内其余EJB的lookup操作全部正常
  • 本次报错的EJB仅修改了Bean类代码,更新后的类文件打包进EAR后,已通过WAS管理控制台完成应用更新
  • 核心疑问:该场景下是否需要重新生成该EJB的部署代码(stub/tie等)?

解答

该场景下必须重新生成对应EJB的部署代码(stub/tie等),原因如下:

  1. 根异常org.omg.CORBA.INV_OBJREF的本质是服务端绑定的EJB对象引用标识(IOR)和调用端持有的标识不匹配。仅更新EJB Bean类文件、不重新生成部署代码的情况下,WAS容器生成的JNDI绑定信息和旧的stub/tie文件不匹配,直接触发IOR无法解析的问题。
  2. WAS的EJB部署代码(stub/tie、绑定配置)是基于EJB类的元数据生成的,即便仅修改Bean类的业务逻辑没有调整对外接口,部分WAS版本也会在EJB类更新后变更部署阶段的绑定标识,仅替换类文件会导致JNDI绑定的对象引用和实际运行的类不匹配。
  3. 其余EJB运行正常,已排除容器全局JNDI服务故障的可能,进一步确认是当前修改过的EJB部署元数据不匹配导致的异常。

修复建议

  • 对修改后的EJB模块重新执行deploy操作,生成最新的stub/tie代码,和更新后的Bean类共同打包进EAR重新部署即可解决问题
  • 部署完成后建议清空WAS的临时缓存目录,避免旧的绑定信息残留引发二次问题

内容的提问来源于stack exchange,提问作者Senior Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:15:03