XPages环境下用domino-jna遇Thread is not enabled for auto GC错误求助
问题场景
在XPages环境中运行以下代码时:
NotesDatabase db = new NotesDatabase(ExtLibUtil.getCurrentSession(), "", fakenamesPath);
出现错误提示:
HTTP JVM: java.lang.IllegalStateException: Thread is not enabled for auto GC. Either run your code via NotesGC.runWithAutoGC(Callable) or via try-with-resources on the object returned by NotesGC.initThread().
已安装domino-jna-xpages-0.9.48版本,且了解到该插件应与JSF生命周期集成自动处理内存管理,但仍触发上述错误。
排查与解决要点
检查类导入正确性
确保代码中使用的NotesDatabase是domino-jna封装的类(org.openntf.domino.NotesDatabase),而非原生Lotus Domino API的lotus.domino.NotesDatabase。若导入错误,插件的自动GC机制无法生效,必须手动包裹NotesGC逻辑。确认插件部署与激活状态
- 在Domino服务器控制台执行命令:
tell osgi ss org.openntf.domino.jna.xpages,检查插件状态是否为ACTIVE。若为INSTALLED或RESOLVED,说明插件未正确激活,需检查服务器OSGi配置或插件依赖。 - 确保XPages应用的
plugin.xml中已添加对org.openntf.domino.jna.xpages的依赖,或应用已通过更新站点安装该插件。
- 在Domino服务器控制台执行命令:
验证代码执行时机
若代码在JSF生命周期之外的线程中执行(如后台定时任务、自定义线程池、异步Bean的非托管线程),插件的自动GC机制无法覆盖这类场景,仍需手动使用NotesGC.runWithAutoGC()或try-with-resources包裹代码。检查版本兼容性
确认domino-jna-xpages-0.9.48与当前Domino服务器版本兼容。部分Domino版本(如10.0.1以下)可能需要适配特定版本的domino-jna插件,建议核对插件发布说明确认版本匹配性。检查xsp.properties配置
确保XPages应用的xsp.properties中未禁用domino-jna的集成逻辑,相关配置项(如xsp.library.depends=org.openntf.domino.jna.xpages)需正确设置。
内容的提问来源于stack exchange,提问作者Patrick Kwinten

