Сохранение баз данных открытыми в Java агенте IBM Domino / Lotus - PullRequest
1 голос
/ 21 февраля 2020

У меня есть 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 значение null.

Интересно, это хорошая практика? Я уже пытался открывать и закрывать базу данных всякий раз, когда это необходимо, но поскольку код слишком велик, я получу исключения с нулевым указателем, если я ошибочно, например, переработал базу данных в другом классе. Вот почему я держу открытыми базы данных в начале агента и перерабатываю их в конце. Но я не знаю, вызывает ли это утечки памяти.

1 Ответ

2 голосов
/ 21 февраля 2020

Не беспокойтесь о том, чтобы не перерабатывать базы данных. Когда агент завершит работу, все базы данных будут автоматически перезагружены.

Важно перезапускать объект Domino только в том случае, если вы создаете его экземпляры сотнями или тысячами, например, просматривая все записи в представлении.

...