04 CDI 实验合同(拟实施;当前 NOT_RUN) 工程入口:examples/javaee-enterprise/pom.xml 真实代码:application/src/main/java/blog/javaee/application/ProcurementUseCases.java 尚不存在:/_diag/cdi/identity、请求/应用探针、第二个 PriceCatalog、qualifier、producer/disposer。 隔离环境:JDK 21、Jakarta EE 11、Open Liberty 26.0.0.5;在部署时记录实际版本。 正常: cd examples/javaee-enterprise ../hibernate-lab/mvnw -B -ntp -f "$PWD/pom.xml" clean verify curl -sS -i http://127.0.0.1:9085/procurement/api/_diag/cdi/identity curl -sS -i http://127.0.0.1:9085/procurement/api/_diag/cdi/identity 断言:两个独立请求的请求实例 ID 不同;每个请求内部两次调用 ID 相同;应用实例 ID 在同一应用上下文中一致。必须比较目标实例 ID,不能比较代理引用。 失败:在隔离工作副本新增带 @ApplicationScoped 且无专用 qualifier 的第二个 @Default PriceCatalog,重新构建并部署(当前 beans.xml 仅发现有 bean 定义注解的类)。 断言:容器拒绝有歧义的注入;记录部署退出状态和完整异常链,不依赖固定文案。 修复(拟议):给候选实现和注入点加一致的限定符后再部署;核验选择了预期目录,而不只看 HTTP 状态。 并发:为实验探针临时加入 application-scoped 的可变租户字段,使用双请求同步屏障保证交错;记录每个请求传入/读取的租户值。移除临时字段后再复测。 销毁:记录请求创建及 @PreDestroy、producer/disposer 的实例 ID 与调用次数;强制进程终止不保证回调。 保存位置(运行时指定):隔离证据目录,保存源码 SHA、WAR SHA、服务器配置、命令、退出码、时间戳、完整 HTTP 报文、部署/销毁日志和交错时间线。未执行时以下项目均留空: 命令及退出码: 部署日志路径: 请求原文路径: 销毁/并发事件路径: 结论:NOT_RUN