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