首页 > 解决方案 > 一段时间后注入的变量为空

问题描述

目前,在 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
    }
}

一旦注入的变量为空,所有后续注入也将导致空值渲染服务不可用。知道问题可能是什么或如何调试它吗?

标签: cdiweldopen-liberty

解决方案


推荐阅读