在 Java 代理 IBM Domino / Lotus 中保持数据库打开

Keeping databases open in Java agent IBM Domino / Lotus

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

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;
        }

    }

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

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

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

只有当您像 运行 通过视图中的所有条目实例化成百上千个 Domino 对象时,回收 Domino 对象才重要。