Я был довольно строгим в области переработки объектов Notes, но я столкнулся с ситуацией, когда я не могу перерабатывать объект, потому что он передается обратно от метода к вызову код. Таким образом, в классе у меня есть этот код:Проблема object.recycle, и когда это сделать
public Database getAppDB() {
Database appDB = null;
try{
Session s = ExtLibUtil.getCurrentSession();
serverName = s.createName(s.getCurrentDatabase().getServer()).getCommon();
appDB = s.getDbDirectory(serverName).openDatabaseByReplicaID(this.getAppRepID());
return appDB;
}catch (NotesException e){
System.out.println(e.toString());
return appDB;
}finally{
Utils.recycleObjects(s);
}
}
Какой openes базу данных затем передает AppDB обратно в вызывающую программу. Очевидно, что если я создам базу данных в своей вызывающей программе, мне нужно ее переработать, но в этом методе класса я не могу ее переработать, потому что она возвращается. Я создаю тикающую бомбу замедленного действия с этим? Если это так? Этот метод можно было бы назвать сотнями раз в течение жизненного цикла сеанса.
Просто для любопытства - что находится в getAppRepID()? –
Этот метод является частью класса AppProperties, который хранится в HashMap строки типа, объекта <имя_пользователя, AppProperties>. HashMap сохраняет одно или несколько определений приложений (см. Http://stackoverflow.com/questions/24746448/addition-to -managed-bean-best-practice) Таким образом, getAppRepID получает значение текущей версии репликации базы данных приложений. класс AppProperties хранит несколько фрагментов информации о каждом приложении, которое можно вызывать из основной БД. Используя этот метод, я могу повторно использовать большинство моих XPages и Custom Controls. 90% дизайна приложений распространено в основной БД. –