Was ist der beste Weg, um Domino-Objekte in Java Beans zu recyceln?

7

Ich verwende eine Funktion, um auf ein Konfigurationsdokument zuzugreifen:

%Vor%

In einer anderen Methode verwende ich diese Funktion, um das Dokument zu erhalten:

%Vor%

Soll ich die Objekte "Datenbank" und "Objekte anzeigen" recyceln, wenn ich das Objekt "Dokument" recycle? Oder sollten diese recycelt werden, bevor die Funktion das Dokument zurückgibt?

Versuche, meinen Code aufzumischen ...

/ Newbs

    
Newbs 22.06.2012, 15:35
quelle

2 Antworten

21

Die beste Vorgehensweise besteht darin, alle Domino-Objekte während des Bereichs, in dem sie erstellt wurden, zu recyceln. Beim Recycling eines Objekts werden jedoch automatisch alle Objekte "darunter" recycelt. Daher können Sie in Ihrer Beispielmethode wDb nicht recyceln, da dies dazu führen würde, dass auch wDoc wiederverwendet wird, sodass Sie ein wiederverwendetes Dokument-Handle zurückgeben.

Wenn Sie also sicherstellen möchten, dass kein Speicher ausgelaufen ist, empfiehlt es sich, die Objekte in umgekehrter Reihenfolge wiederzuverwenden (z. B. erst das Dokument, dann die Ansicht und dann die Datenbank). Dies erfordert, dass Sie Ihre Methoden so strukturieren müssen, dass Sie alles tun, was Sie für ein Domino-Objekt innerhalb benötigen, unabhängig davon, welche Methode das Handle erhält.

Ich nehme zum Beispiel an, dass der Grund, warum Sie eine Methode zum Abrufen eines Konfigurationsdokuments definiert haben, darin besteht, dass Sie den Wert der Konfigurationseinstellungen daraus ableiten können. Anstatt eine Methode zum Zurückgeben des Dokuments zu verwenden, wäre es vielleicht besser, eine Methode zu definieren, um einen Elementwert zurückzugeben:

%Vor%

Es gibt ein paar Dinge über die oben genannten, die eine Erklärung verdienen:

  • Normalerweise deklarieren wir in Java zuerst Variablen und nicht den Stil Inhaltsverzeichnis. Aber mit Domino-Objekten ist es am besten, zu TOC zurückzukehren, so dass wir, egal ob eine Ausnahme ausgelöst wurde oder nicht, versuchen können, sie zu recyceln, wenn wir fertig sind ... daher die Verwendung von finally.
  • Das return-Objekt (das ein Elementwert sein sollte, nicht das Dokument selbst) wird ebenfalls im Inhaltsverzeichnis deklariert, sodass wir dieses Objekt am Ende der Methode zurückgeben können - auch hier, ob eine Ausnahme aufgetreten ist (if Es gab eine Ausnahme, vermutlich ist es immer noch null).
  • In diesem Beispiel wird eine Hilfsmethode aufgerufen, mit der wir alle Domino-Objekte zum Recyceln an einen einzelnen Methodenaufruf übergeben können.

Hier ist der Code dieser Hilfsmethode:

%Vor%

Es ist privat, da ich davon ausgehe, dass Sie es nur in der gleichen Bean definieren werden, aber in letzter Zeit tendiere ich dazu, dies als eine öffentliche statische Methode einer Util-Klasse zu definieren .

Eine letzte Anmerkung: Wenn Sie zahlreiche Elementwerte aus einem Konfigurationsdokument abrufen, wäre es natürlich teuer, eine neue Datenbank-, Ansichts- und Dokumentkennung für jeden Elementwert einzurichten, den Sie zurückgeben möchten. Daher würde ich empfehlen, diese Methode zu überschreiben, um eine List & lt; String & gt; (oder String []) von Elementnamen und gibt eine Map & lt; String, Object & gt; der resultierenden Werte. Auf diese Weise können Sie ein einziges Handle für die Datenbank erstellen, anzeigen und dokumentieren, alle benötigten Werte abrufen und anschließend die Domino-Objekte wiederverwenden, bevor Sie die zurückgegebenen Elementwerte tatsächlich verwenden.

    
Tim Tripcony 22.06.2012, 17:07
quelle
0

Hier ist eine Idee, mit der ich experimentiere. Tims Antwort ist ausgezeichnet, aber für mich brauchte ich das Dokument wirklich für andere Zwecke, also habe ich das versucht ..

%Vor%

Sie müssen dann sicherstellen, dass Sie das Doc-Objekt in jeder beliebigen Methode sicher zurückgeben, die diese Methode aufruft.

    
Martin Rolph 02.01.2015 09:52
quelle

Tags und Links