Verbindungsmanager im Cache in jboss / wildfly

8

Ich habe eine Datenquelle für JBoss AS 7.4 definiert, mit minimalen / maximalen Poolgrößen, Tracing von freien Verbindungen etc.

Ich bin verwirrt über die Datenquelle use-ccm -Eigenschaft.

  • Was macht es?
  • Warum es benutzen?

Ich dachte, die Datenquelle selbst verwaltet den Verbindungspool.

    
user1340582 06.02.2015, 12:21
quelle

1 Antwort

11
  

Was macht es?

Es ist nur ein nützliches Debugging-Tool, um Verbindungslecks in manuell verwalteten Transaktionen (BMT) zu erkennen, indem es seine Protokollierung überprüft. Wenn es im Debug-Modus aktiviert ist, protokolliert es alle Verbindungen, die vom Anwendungscode erfasst und freigegeben wurden, zusammen mit den Abfragen. Dies kann verwendet werden, um Verbindungslecks im Anwendungscode zurückzuverfolgen.

Der JBoss AS 5 Administrationshandbuch erklärt dies besser als die JBoss AS 7 Administrationshandbuch und neuer. Es fehlt sogar in der WildFly-Dokumentation. Der folgende Auszug stammt aus dem JBoss AS 5 Guide:

  

3.1. Zwischengespeicherter Verbindungs-Manager

     

Der Cached-Verbindungs-Manager wird zum Debuggen von Datenquellenverbindungen und zum Unterstützen der verzögerten Eintragung einer Datenquellenverbindung in einer Transaktion verwendet. Dabei wird überwacht, ob sie von der Anwendung ordnungsgemäß verwendet und freigegeben werden. Auf Kosten eines gewissen Overheads kann es eine Ablaufverfolgung der Verwendung bereitstellen und sicherstellen, dass Verbindungen von einer Datenquelle nicht von Ihrer Anwendung durchgesickert werden. Obwohl dies als ein Vorteil erscheint, wird es in manchen Fällen als ein Anti-Pattern betrachtet und daher vermieden werden.

     

[...]

     

In der Standardkonfiguration, der Standardkonfiguration und allen Konfigurationen ist CachedConnectionManager so konfiguriert, dass es sich im Debug-Modus im Servlet-Container befindet. Es ist auch in der Produktionskonfiguration konfiguriert, aber mit deaktiviertem Debug-Modus. Wenn Sie BMT nicht verwenden und / oder das oben beschriebene Anti-Pattern nicht verwenden, entfernen Sie am besten CachedConnectionManager .

  

Warum verwenden Sie es?

Schalten Sie es nur im Debug-Modus ein, wenn Sie keine Container-verwaltete Transaktionen (CMT) verwenden, aber Transaktionen (BMT) und manuell verwalten, da Sie ein Verbindungsverlust-Problem haben nageln Sie nicht. Einmal gefunden, basierend auf der Protokollierung von CCM und fest im Anwendungscode, ist es am besten, sie wieder auszuschalten, um Leistung zu sparen.

Wenn Sie CMT verwenden, dh Sie sind nirgends in Ihrer Anwendung, wenn Sie sich mit Connection und / oder UserTransaction Instanzen befassen, aber lassen Sie EJB + JTA einfach ihre harte Arbeit, halten Sie sie einfach aus.

  

Ich dachte, die Datenquelle selbst verwaltet den Verbindungspool.

Dies geschieht nur zwischen dem Server und der Datenbank. Dies geschieht nicht zwischen dem Server und dem Anwendungscode. Bei CMT geschieht dies automatisch. Bei der Verwendung von BMT ist der Entwickler des Anwendungscodes dafür verantwortlich. Wenn in einem solchen Fall ein Verbindungsleck auftritt, kann CCM verwendet werden, um es zu nageln.

Siehe auch Mastertheboss.com - How JDBC-Anweisungen mit JBoss und WildFly verfolgen .

    
BalusC 21.12.2015 21:13
quelle