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

OpenAM 9.5.3中AMIdentity.store()抛MissingResourceException求助

解决OpenAM 9.5.3调用AMIdentity.store()时的MissingResourceException问题

结合你提供的异常栈和场景(运行数天后突发,重启可临时解决),这个问题的核心是LDAP插件无法找到错误码-1对应的资源消息,而-1并非标准LDAP错误码,大概率是LDAP连接池耗尽或连接异常导致的间接报错。下面是无需升级版本的可行解决方案:

1. 补全缺失的资源条目先缓解异常

异常直接触发点是LDAPv3Bundle.getString(-1)找不到对应资源,我们可以先补全这个条目避免服务崩溃:

  • 找到OpenAM部署目录下的WEB-INF/classes/com/sun/identity/idm/plugins/ldapv3/ldapv3.properties文件
  • 在文件末尾添加一行:-1=LDAP Connection Failure (Unknown Error Code -1)
  • 重启OpenAM服务,这样即使再出现-1错误,也会返回明确的错误消息,不会抛出MissingResourceException,同时能帮你在日志中定位更底层的问题。

2. 排查LDAP连接池配置问题

运行数天后才出现问题,很大概率是LDAP连接池资源耗尽,导致新请求无法获取有效连接,返回了非标准的-1错误码:

  • 登录OpenAM控制台,进入你配置的LDAP数据存储页面
  • 检查并调整以下参数:
    • Max Connections:如果设置过小,高并发场景下容易耗尽,建议根据业务量适当调大(比如从默认的10调整到20-30)
    • Idle Timeout:设置空闲连接的超时时间(比如300秒),让连接池自动回收闲置连接
    • Connection Timeout:缩短连接超时时间,避免无效连接长期占用池资源
  • 保存配置后重启服务,观察问题是否重现。

3. 开启LDAP插件调试日志定位连接泄漏

如果调整连接池参数后问题依旧,可能是代码中存在LDAP连接泄漏,需要通过日志排查:

  • 在OpenAM控制台的Configuration > Servers and Sites > [你的服务器] > Debug页面
  • 找到com.sun.identity.idm.plugins.ldapv3模块,将调试级别设为Message或All
  • 运行服务直到问题重现,查看调试日志中连接的getConnection和releaseConnection记录,确认是否有连接未被正确归还到池里
  • 检查你的业务代码,确保调用AMIdentity.store()后,相关的IDM上下文或资源被正确释放(比如关闭AMIdentity相关会话)

4. 定时清理IDM缓存缓解积累问题

OpenAM的IDM缓存如果长期未清理,可能会积累无效的连接或用户数据,导致后续操作异常:

  • 可以通过OpenAM控制台的Configuration > System > Cache页面,手动清理IDM相关缓存
  • 或者通过JMX调用com.sun.identity.idm.server.IdCachedServicesImpl的clearCache方法,定时执行缓存清理(比如每天一次),避免缓存积累引发的问题

内容的提问来源于stack exchange,提问作者Saurabh Batra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:22:26