cdi - 一段时间后注入的变量为空
问题描述
目前,在 Open Liberty 18.0.0.4 中运行的 Web 应用程序存在一个非常奇怪的问题。我们将 Mongo 数据库连接注入到 JAX-RS 请求处理程序中。注入值的生产者只返回一个成员变量,一旦初始化就永远不会为空。该服务可以正常运行数小时,有时甚至数天,然后突然对注入的 Mongo 数据库的任何访问都会引发 NPE。这是代码的粗略草图:
@ApplicationScoped
public class BackingServiceConnectionFactory {
private MongoDatabase m_mongoDatabase = ...;
@Produces
public MongoDatabase getMongoDatabase() {
return m_mongoDatabase;
}
}
@Path("repository")
public class RepositoryImpl {
@Inject
private MongoDatabase m_database;
@GET
public Response foo() {
MongoCollection<Document> workflows = m_database.getCollection("workflows"); // <== NPE
}
}
一旦注入的变量为空,所有后续注入也将导致空值渲染服务不可用。知道问题可能是什么或如何调试它吗?
解决方案
推荐阅读
- python - 散景,无法将事件绑定到小部件
- verilog - 状态的枚举字面减速是否保证无故障状态机?
- c# - NHibernate 按子集合计数排序
- scala - Ensime for Emacs 卡在“正在初始化分析器。请稍候...”
- android - 应用内购买或外部支付处理器?
- regex - 读取以某个字符串开头的所有 xml 标记的内容
- apache-spark - 将关系数据存储在 hadoop 中以进行分析
- python - 将 CV2 Numpy 数组转换为 RGB 图像时出现“图像数据不足”错误
- amazon-web-services - 多租户 Web 应用程序上的 AWS Cognito 用户池
- php - Android 运行时出错:无法将字符串转换为 JSONObject