[JAVA] Korrektur, um eine Erhöhung der DB-Verbindungsnummer mit dem benutzerdefinierten Authentifizierungsanbieter des Cognos SDK-Beispiels zu verhindern

Überblick

Im Cognos Analytics SDK gibt es ein Beispiel mit dem Namen Custom Authentication Provider, das die Cognos-Authentifizierung in einem Java-Programm durchführt. * Siehe unten für die benutzerdefinierte Authentifizierung. ** Einrichtungsverfahren für die benutzerdefinierte Cognos-Authentifizierung ** https://qiita.com/shinyama/items/1f9c7842a3966233a5d7

In diesem Beispielprogramm sind kürzlich einige Probleme mit endlosen Verbindungen zur Authentifizierungsquellendatenbank aufgetreten, die viel Db2-Speicher belegt.

Da dieses Programm als Beispiel bereitgestellt wird, wird davon ausgegangen, dass die Verwendung in der Produktionsumgebung auf eigenes Risiko erfolgt. Es werden jedoch viele Projekte tatsächlich verwendet, und ich habe Probleme mit demselben Problem. Ich denke, es gibt viele Projekte, also werde ich sie veröffentlichen.

Bewältigung

In queryImpl () des Programms QueryUtil.java muss der folgende Teil "<-add" hinzugefügt und die Anweisung und das Ergebnisset geschlossen werden. Wenn Sie die Verbindung im Programm explizit schließen, tritt ein Authentifizierungsfehler auf. Schließen Sie sie daher nicht explizit. Nicht mehr benötigte Verbindungen werden jedoch zum Zeitpunkt von Cognos 'integriertem WebSphere Liberty GC freigegeben.

		try (final PreparedStatement statement = connection.prepareStatement(sql))
		{
			for (int i = 0; i < parameters.length; ++i)
				statement.setObject(i + 1, parameters[i]);

			try (final ResultSet resultSet = statement.executeQuery())
			{
				if (includeMetadata)
					data.add(QueryUtil.getMetaDataRow(resultSet));

		while (resultSet.next()) 
            		data.add(QueryUtil.getDataRow(resultSet)); 
 
 		resultSet.close();   <-hinzufügen
                }
 		statement.close();   <-hinzufügen
        } 
        catch (final SQLException ex) 
        { 
            throw new UnrecoverableException("SQL Exception", "An exception was caught while querying the authentication database."); 
        } 


<2018/6/29 postscript> Zusätzlich zu der obigen Änderung des SDK-Programms stellte ich fest, dass durch Ändern der in Cognos integrierten GC-Richtlinie von WebSphere Liberty die DB-Sitzung freigegeben wird, bevor sie durch effizientere GC in großer Anzahl akkumuliert wird. Deshalb habe ich sie hinzugefügt. Stellen.

Informationen zum Ändern des GC für Linux finden Sie in der folgenden Datei. /opt/ibm/cognos/analytics/bin64/bootstrap_wlp_linuxi38664.xml

Ändern Sie an dieser Stelle das Gencon und starten Sie Cognos neu. <param condName="${java_vendor}" condValue="IBM">-Xgcpolicy:gencon</param>

In diesem Fall habe ich es in "Balanced" geändert. https://www.ibm.com/developerworks/jp/websphere/library/was/was8_gc/2.html

Wenn Sie Restorable JDBC Sample und JDBC Sample mit benutzerdefinierter Authentifizierung verwenden möchten, beachten Sie bitte diesen Artikel.

Recommended Posts

Korrektur, um eine Erhöhung der DB-Verbindungsnummer mit dem benutzerdefinierten Authentifizierungsanbieter des Cognos SDK-Beispiels zu verhindern
Eine Beschreibung des JDBC-Beispiels, die bei der Entwicklung eines benutzerdefinierten Authentifizierungsanbieters mit dem Cognos SDK hilfreich ist
Erhöhen Sie dynamisch die Anzahl der Elemente in einem zweidimensionalen Java-Array (mehrdimensionales Array).
Beispielcode zum Zuweisen eines Werts in der Eigenschaftendatei zu einem Feld des erwarteten Typs
In Anbetracht der Einführung der Java-Sprache in der Reiwa-Ära ~ Auswahl eines sicheren SDK
Ein Programm, das die Anzahl der Wörter in einer Liste zählt
Finden Sie mit Kotlin die Anzahl der Tage in einem Monat
802.1X-Authentifizierung für das Netzwerk der Bonding-Einstellung in CentOS7
[Swift] Wenn Sie wissen möchten, ob die Anzahl der Zeichen in String mit einer bestimmten Anzahl übereinstimmt ...
Korrigieren Sie den Namen der Kriegsdatei auf den in Maven festgelegten
Ich habe versucht, ein Beispielprogramm mit dem Problem des Datenbankspezialisten für domänengesteuertes Design zu erstellen
Remote-Debugging von Cognos SDK
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
So ändern Sie die maximale und maximale Anzahl von POST-Daten in Spark
So ermitteln Sie die Gesamtzahl der Seiten beim Paging in Java
Beispielprogramm, das den Hashwert einer Datei in Java zurückgibt
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses