【问题标题】:Keeping databases open in Java agent IBM Domino / Lotus在 Java 代理 IBM Domino / Lotus 中保持数据库打开
【发布时间】:2020-02-21 19:07:04
【问题描述】:

我有一个 Java 代理。 当我运行代理时,我还创建了一个正在打开数据库的对象。 这是数据库类的代码:

public class Databases {
    Database OrdersDB;
    Database CustomersDB;
    Database ItemsDB; 
    Database TablesDB; 
    Database ItemsDB;

    public Databases() throws NotesException{
    }

    public boolean openAllDatabases(Session session){

        try {

            OrdersDB = session.getDatabase(getServerName(session,"ORDER"),globalSettings.OrderDB, false);
            CustomersDB= session.getDatabase(getServerName(session,"CUSTOMER"),globalSettings.CustomerDB, false);
            TablesDB= session.getDatabase(getServerName(session,"TABLES"),globalSettings.TablesDB, false);
            ItemsDB = session.getDatabase(getServerName(session,"ITEMS"),globalSettings.ItemsDB, false);
            return true;
        } catch (NotesException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("Database not opened!");
            return false;
        }

    }

在整个代理中,我都使用这个数据库 obj。同样在我的代理中,我创建了另一个类,在其中我将此数据库 obj 作为参数传递,并在那里使用数据库。 最后,当我的代理完成后,我回收所有数据库并将数据库 Obj 设置为 null。

我想知道这是否是一个好习惯? 我已经尝试在需要时打开和关闭数据库,但是由于代码太大,如果我错误地回收了另一个类中的数据库,我会得到空指针异常。 这就是为什么我在代理开始时保持打开数据库并在结束时回收它们的原因。 但我不知道这是否会导致内存泄漏。

【问题讨论】:

    标签: java lotus-domino


    【解决方案1】:

    不用担心不回收数据库。代理完成后,所有数据库将自动回收。

    仅当您实例化数百或数千个 Domino 对象时,回收 Domino 对象才重要,例如遍历视图中的所有条目。

    【讨论】:

    • 谢谢。我在代理结束时回收了大部分多米诺骨牌对象,例如 Documents。或者每当出现错误时。也可以吗?
    • 是的,这很完美。唯一的陷阱可能是您在内部循环中回收文档,尽管它被分配给外部某处的另一个变量(很少 - 我们曾经有过)。
    • 文档和物品通常是要回收的重要物品,因为您倾向于循环使用这些物品,有时每个文档包含数十万个文档和很多很多物品。但正如 Knut 所说,如果您在代码的多个部分中访问同一个实际文档,则在完成所有实例之前,您不希望回收 Document 对象。对于您为数据库设计的容器对象,或者使用 Domino ojbects 的 OpenNTF 版本,它是为您处理所有回收的容器对象,这是一个完美的用例!
    • 有一天我真的需要知道如何使用 openNTF 数据库,我可以将它与我现有的代理 @RichardSchwartz 一起使用吗?
    • 您可以在此处查看文档。 openntf.org/main.nsf/project.xsp?r=project/…
    猜你喜欢
    • 2020-07-26
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2011-04-20
    • 2012-08-29
    • 2013-02-05
    • 2012-11-08
    • 1970-01-01
    相关资源
    最近更新 更多