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

问题描述 投票:0回答:1

我有一个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个回答
0
投票

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

[如果要像遍历视图中的所有条目那样通过成百上千个实例化对象,则回收Domino对象是非常重要的。

© www.soinside.com 2019 - 2024. All rights reserved.